فوریه 26, 2018 پیام قربانپور 0دیدگاه

وقتی داشتم با فریم‌ورک جنگو یه پروژه رو پیش‌ می‌بردم به چیزی برخوردم به نام CSRF.

CSRF)Cross-Site Request Forgery)

CSRF که مخفف Cross-Site Request Forgery هست یه میان‌افزاره برای اینکه کسی نتونه فرم‌ها رو جعل کنه. این اتفاق، یعنی جعل کردن فرم، وقتی می‌افته که  یه سایت مخرب با استفاده از مرورگر بازدید کننده درخواستی رو برای سرور می‌فرسته و باعث تغییر تو اطلاعات سرور می‌شه. سرور فکر می‌کنه که کاربر از همه جا بی‌خبر می‌خواسته یه فرمی رو ارسال کنه. چون سایت مخرب با استفاده از کوکی کاربر، عملیات خرابکاری خودش رو انجام می‌ده.

سایتمون از کجا آسیب‌پذیره؟

بسته به این‌که کدوم فرم شما ایمن نیست مهاجم از راه‌های زیر می‌تونه خرابکاریشو انجام بده:

۱. خروج(در بعضی از سایت‌ها برای خروج، لینک میذارن، نه دکمه)

۲. فرم ارسال نظرات

۳. فرم تنظیمات کاربر

۴. فرم انتقال وجه

و…

حمله‌های CSRF معمولاً توشون از جاوا اسکریپت برای ارسال فرم استفاده می‌شه. اما بدون جاوا اسکریپت هم می‌شه کاربر رو گول زد و یه فرمی رو از طرف کاربر برای یه سایت دیگه‌ای تایید و ارسال کرد.

پیشگیری از حمله‌ی CSRF

قبل از هر چیزی از فرم‌های خودتون توی سایتتون استفاده کنید. سرویس‌هایی هستن که فرم آماده در اختیارتون قرار می‌دن. معروف‌ترینشون گوگل.

نحوه‌ی استفاده از CSRF توی پایتون(جنگو)

۱. اول از همه باید CSRF، که یه میان‌افزاره، رو فراخونی کنیم. برای این‌کار به فایل setting.py پروژه‌ی خودمون می‌ریم و اونجا توی بخش کلاس‌های میان‌افزار CSRF رو اضافه می‌کنیم. این شکلی:

دقت کنید که ‘django.middleware.csrf.CsrfViewMiddleware’ باید قبل از هر ‌viewای بیاد تا متوجه حملات بشه.

۲. توی پایتون و مشخصاً توی جنگو وقتی داریم برای نمای سایتمون کد می‌زنیم و از HTML استفاده می‌کنیم و وقتی می‌خوایم فرم خودمون رو تعریف کنیم، داخل تگ فرم از CSRF اضافه می‌کنیم. به این شکل:

نکات امنیتی توی هر کد زدنی باید رعایت بشه. نادیده گرفتن حتی نکته‌ی ریزی مثل این باعث به وجود اومدن یه راه نفوذ برای هکرها می‌شه. یادمون باشه که مهاجمین منتظر فراموش کردن همین نکات به نظر کوچیک از طرف شما هستن.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *