آموزش جنگو Django | امنیت در جنگو

نکات امنیتی

جنگو به‌صورت پیش‌فرض دارای ویژگی‌های امنیتی قدرتمندی است، اما رعایت برخی نکات اضافی می‌تواند امنیت پروژه شما را افزایش دهد:

  1. استفاده از SECRET_KEY ایمن:

    • کلید SECRET_KEY در فایل settings.py برای امضاهای امنیتی و هش‌گذاری استفاده می‌شود. هرگز این کلید را در مخزن عمومی (مثل GitHub) قرار ندهید. می‌توانید آن را در فایل‌های محیطی (.env) ذخیره کنید.
  2. فعال‌سازی DEBUG=False در محیط تولید:

    • در حالت DEBUG=True، جنگو جزئیات خطاها را نمایش می‌دهد که می‌تواند اطلاعات حساس را فاش کند. همیشه در محیط تولید این گزینه را غیرفعال کنید.
  3. استفاده از HTTPS:

    • برای جلوگیری از حملات مرد میانی (Man-in-the-Middle)، همیشه از HTTPS استفاده کنید. می‌توانید با تنظیم SECURE_SSL_REDIRECT = True در settings.py، تمام درخواست‌های HTTP را به HTTPS هدایت کنید.
  4. محدود کردن دسترسی‌ها با ALLOWED_HOSTS:

    • فهرست ALLOWED_HOSTS در settings.py مشخص می‌کند که سرورهای مجاز برای میزبانی پروژه کدام‌اند. در محیط تولید، حتماً دامنه‌های معتبر را وارد کنید.
  5. جلوگیری از حملات CSRF:

    • جنگو به‌صورت پیش‌فرض از محافظت CSRF استفاده می‌کند. اطمینان حاصل کنید که در تمام فرم‌های POST از تگ {% csrf_token %} استفاده می‌کنید.
  6. جلوگیری از حملات XSS:

    • برای جلوگیری از حملات XSS، همیشه از فیلترهای خودکار جنگو در قالب‌ها استفاده کنید (مثلاً {{ user_input|escape }}). همچنین از ارسال مستقیم داده‌های کاربر به JavaScript خودداری کنید.
  7. مدیریت صحیح نشست‌ها (Sessions):

    • برای افزایش امنیت، می‌توانید SESSION_COOKIE_SECURE = True و SESSION_COOKIE_HTTPONLY = True را در settings.py تنظیم کنید تا کوکی‌های نشست فقط از طریق HTTPS ارسال شوند و از دسترسی JavaScript جلوگیری شود.
  8. استفاده از کتابخانه‌های امنیتی:

    • کتابخانه‌هایی مانند django-csp (Content Security Policy) و django-axes (برای محدود کردن تلاش‌های لاگین ناموفق) می‌توانند امنیت پروژه را بهبود بخشند.

با رعایت این نکات، می‌توانید امنیت برنامه‌های جنگو خود را به‌طور چشمگیری افزایش دهید.

پرسش و پاسخ این درس

برای ثبت پرسش ابتدا در سایت وارد شوید.

  • 1
  • 2
  • 3