منتظر اتفاقات بسیار بسیار جالب از وب سایت دکادیزاین در اوایل سال 97 باشید ...!

آموزش جلوگیری از حملات CSRF با PHP

۱۳۹۶-۱۰-۱۳
183
بدون دیدگاه
آموزش جلوگیری از حملات CSRF با PHPReviewed by دکادیزاین on Jan 3Rating:

اگر سایت خود را در مقابل حملات CSRF ایمن نکنیم ، میتواند خطرات زیانباری را برای سایت ما پدید آورد ، برای جلوگیری از اینگونه حملات با PHP باما همراه باشید.


توجه : اگر با حملات CSRF آشنایی کافی ندارید ، این مقاله را مطالعه کنید .

:: حملات CSRF چیست ؟


:: در ابتدا کمی توضیحات 😉

فرض کنید ادمین یک سایت هستید ، برای پاک کردن یکی از مطالب سایت خود باید آدرس زیر را در مرورگر خود وارد کنید .

حال فرض کنید یک هکر که قصد حمله CSRF را دارد ، این URL را از طریق مرورگر شما ارسال می کند ( بدون آگاهی شما )

بدون ایجاد شدن هیچ گونه مشکل و ارور ، پست شماره ۳۲ پاک میشود ( زیرا این درخواست توسط مرورگر شما ارسال شده و شما هم در پنل مدیریت خود لاگین هستید )


:: چگونه از حملات CSRF جلوگیری کنیم ؟

برای جلوگیری از اینگونه حملات ، باید توکنی را ایجاد کنید که برای هکر قابل حدس و ایجاد نباشد .

این بدین معناست تا زمانی که آن توکن در URL شما وجود نداشته باشد ( متدد GET ) ، درخواست اجرا نخواهد شد

بطور مثال برای حذف پست ، اگر توکنی را در انتهای URL قرار می دادیم هکر با اجرای URL زیر تنها قادر بود پست ما را حذف کند ( در حالی که امکان ایجاد توکن توسط هکر وجود ندارد )

نکته خیلی مهم :: انجام حمله CSRF توسط متدد POST نیز امکان پذیر می باشد .


:: برای ایجاد توکن منحصر به فرد باید چه کنیم ؟

توجه : در ابتدای سند خود ، بدون هیچ فاصله دستور زیر را برای فعال شدن SESSION قرار دهید .

بهترین کار ، نوشتن یک تابع ( function ) است که برای ما یک توکن منحصر به فرد ایجاد کند ؛ این تابع را درون فایل توابع پروژه خود قرار دهید .


:: چگونه از توکن ایجاد شده استفاده کنیم ؟ ( ایمن سازی برای متدد POST )

در این مثال فرمی را ایجاد می کنیم ، تنها در صورتی که توکن ساخته شده توسط سایت ما در آن وجود داشته باشد ، دستورات فرم اجرا می شود .


:: استفاده از توکن در انتهای URL ( متدد GET )

در این مثال لینکی را ایجاد می کنیم که بصورت GET در پارامتر name  عبارتی نوشته می شود ، عبارت وارد شده در پارامتر name تنها در صورتی روی صفحه چاپ می شود که توکن معتبر در پارامتر token ارسال شده باشد ( به کد زیر توجه کنید )


در نهایت اگر سوال یا مشکلی داشتید ، حتما آنرا از طریق کامنت این مطلب بیان کنید .

پاسخگوی سوالات شما هستیم 😉

دیدگاه شما

( الزامي )

(الزامي)