تنظیمات امنیتی جنگو
جنگو امنیت

تنظیمات امنیتی در جنگو

  • 1403/09/17

تنظیمات امنیتی در Django: راهکارهای امن‌سازی وب اپلیکیشن

ر فریم‌ورک Django، مجموعه‌ای از تنظیمات امنیتی وجود دارد که می‌توان با پیکربندی صحیح آن‌ها، آسیب‌پذیری‌های رایج را کاهش داد. این مقاله به بررسی مهم‌ترین تنظیمات امنیتی در Django می‌پردازد و نحوه دسته‌بندی و کارکرد آن‌ها را توضیح می‌دهد.

1. تنظیمات امنیتی کوکی‌ها و سشن‌ها

کوکی‌ها و سشن‌ها نقش کلیدی در ذخیره اطلاعات نشست کاربران دارند و بدون محافظت مناسب، ممکن است در معرض حملات 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.

 

2. تنظیمات هدرهای امنیتی (HTTP Security Headers)

ارسال هدرهای امنیتی در پاسخ‌های 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.

3. تنظیمات HSTS (HTTP Strict Transport Security)

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 برای ارتباطات بین مرورگر و سرور.

 

4. تنظیمات اشتباه یا غیرضروری

گاهی در تنظیمات امنیتی، گزینه‌هایی اضافه می‌شوند که در Django وجود ندارند و باید حذف شوند. برای مثال:

  • TIMEOUT_SECONDS
    این گزینه در تنظیمات Django وجود ندارد و نیاز به حذف دارد.
  • SECURE_COOKIES
    این گزینه نیز غیرمعتبر است و در Django پشتیبانی نمی‌شود.

تنظیمات امنیتی در Django یکی از مهم‌ترین بخش‌های توسعه وب اپلیکیشن‌های امن است. تنظیمات ذکرشده با تأکید بر محافظت از کوکی‌ها، امن‌سازی سشن‌ها و ارسال هدرهای امنیتی، می‌توانند به کاهش تهدیدات سایبری مانند XSS، CSRF، Clickjacking و MITM کمک کنند.

توسعه‌دهندگان باید اطمینان حاصل کنند که:

  1. HTTPS در سرور فعال است.
  2. DEBUG = False در تنظیمات Django غیرفعال شده باشد.
  3. تنظیمات اضافی و اشتباه حذف شوند.

با رعایت این اصول، امنیت وب اپلیکیشن به میزان قابل توجهی افزایش خواهد یافت.

دیدگاه
نوشتن یک دیدگاه

آدرس ایمیل شما منتشر نخواهد شد، فیلدهای الزامی علامت گذاری شده است*.

عضویت در خبرنامه

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