تنظیمات امنیتی در جنگو
- 1403/09/17
ر فریمورک Django، مجموعهای از تنظیمات امنیتی وجود دارد که میتوان با پیکربندی صحیح آنها، آسیبپذیریهای رایج را کاهش داد. این مقاله به بررسی مهمترین تنظیمات امنیتی در Django میپردازد و نحوه دستهبندی و کارکرد آنها را توضیح میدهد.
کوکیها و سشنها نقش کلیدی در ذخیره اطلاعات نشست کاربران دارند و بدون محافظت مناسب، ممکن است در معرض حملات Man-in-the-Middle یا Cookie Hijacking قرار بگیرند. Django با ارائه تنظیمات زیر به محافظت از اطلاعات کوکیها کمک میکند:
SESSION_COOKIE_SECURE
با فعالسازی این گزینه، کوکیهای سشن فقط در اتصالات HTTPS ارسال میشوند.
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_HTTPONLY
این گزینه از دسترسی کوکیها توسط JavaScript جلوگیری میکند و به کاهش خطر حملات XSS (Cross-Site Scripting) کمک میکند.
SESSION_COOKIE_HTTPONLY = True
CSRF_COOKIE_SECURE
مشابه گزینه بالا، کوکیهای CSRF فقط در اتصالات امن HTTPS ارسال خواهند شد.
CSRF_COOKIE_SECURE = True
CSRF_COOKIE_HTTPONLY
این گزینه کوکی CSRF را از دسترس JavaScript خارج میکند.
CSRF_COOKIE_HTTPONLY = True
SESSION_COOKIE_AGE
مدت زمان اعتبار کوکی سشن را مشخص میکند (بر حسب ثانیه).
SESSION_COOKIE_AGE = 3600 # معادل یک ساعت
SESSION_EXPIRE_AT_BROWSER_CLOSE
این گزینه باعث میشود سشنها با بسته شدن مرورگر منقضی شوند.
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
هدف: جلوگیری از نشت اطلاعات کوکیها و سشنها در اتصالات ناامن و کاهش آسیبپذیری در برابر حملات XSS و MITM.
ارسال هدرهای امنیتی در پاسخهای HTTP به مرورگرها کمک میکند تا سیاستهای امنیتی را به درستی اجرا کنند. Django بهطور پیشفرض از برخی هدرهای امنیتی پشتیبانی میکند:
SECURE_BROWSER_XSS_FILTER
این گزینه هدر X-XSS-Protection
را فعال میکند و مرورگر را وادار میکند که حملات XSS را فیلتر کند.
SECURE_BROWSER_XSS_FILTER = True
X_FRAME_OPTIONS
با این گزینه میتوان از بارگذاری وبسایت در iframe جلوگیری کرد و مانع از حملات Clickjacking شد.
مقدار DENY
بهطور کامل بارگذاری در iframe را مسدود میکند.
X_FRAME_OPTIONS = 'DENY'
SECURE_CONTENT_TYPE_NOSNIFF
این گزینه هدر X-Content-Type-Options
را فعال میکند و از MIME sniffing جلوگیری میکند.
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_REFERRER_POLICY
این گزینه هدر Referrer-Policy
را تنظیم میکند و میزان اطلاعات رفرنس (Referrer) را محدود میکند.
SECURE_REFERRER_POLICY = 'strict-origin-when-cross-origin'
هدف: افزایش ایمنی مرورگر در برابر حملات رایج مانند XSS، Clickjacking و MIME Sniffing.
HSTS یک مکانیسم امنیتی است که مرورگر را وادار میکند تنها از پروتکل HTTPS برای ارتباط با سرور استفاده کند. این کار مانع از حملات Downgrade Attack و ارسال درخواستهای HTTP میشود. تنظیمات مربوط به HSTS در Django عبارتاند از:
SECURE_HSTS_SECONDS
مدت زمان اعتبار سیاست HSTS را مشخص میکند (بر حسب ثانیه). مقدار 31536000
برابر با یک سال است.
SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS
این گزینه HSTS را برای تمامی سابدامینهای سایت نیز فعال میکند.
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD
این گزینه سایت را برای فهرست preload مرورگرها آماده میکند.
SECURE_HSTS_PRELOAD = True
هدف: تضمین استفاده همیشگی از HTTPS برای ارتباطات بین مرورگر و سرور.
گاهی در تنظیمات امنیتی، گزینههایی اضافه میشوند که در Django وجود ندارند و باید حذف شوند. برای مثال:
TIMEOUT_SECONDS
SECURE_COOKIES
تنظیمات امنیتی در Django یکی از مهمترین بخشهای توسعه وب اپلیکیشنهای امن است. تنظیمات ذکرشده با تأکید بر محافظت از کوکیها، امنسازی سشنها و ارسال هدرهای امنیتی، میتوانند به کاهش تهدیدات سایبری مانند XSS، CSRF، Clickjacking و MITM کمک کنند.
توسعهدهندگان باید اطمینان حاصل کنند که:
با رعایت این اصول، امنیت وب اپلیکیشن به میزان قابل توجهی افزایش خواهد یافت.
رایگان ثبت نام کنید و اولین نفری باشید که از پست های جدید مطلع می شوید.