mrbardia72
mrbardia72
خواندن ۵ دقیقه·۴ سال پیش

چک لیست امنیتی جنگو قبل از استقرار

django security
django security

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

چک لیست استقرار

اول از همه ، دستور زیر را در قسمت پروژه جانگو خود وارد کنید:

Python3 manage.py check --deploy

خروجی به شما توضیحاتی در مورد آسیب پذیری برنامه وب Django ارائه می دهد.

خوب بریم کم کم ببینم چی رو باید رعایت کنیم ✍?

The Mozilla Observatory

اگر قبلاً برنامه خود را مستقر کرده اید ، از این سایت که توسط سایت موزیلا برای اسکن وضعیت امنیتی سایت استفاده می شود استفاده کنید. این سایت همچنین شامل اسکنرهای شخص ثالث است که سایر جنبه های امنیتی سایت شما را آزمایش می کند. ? ?

مثال اسکن:

The Mozilla Observatory
The Mozilla Observatory


محافظت از درخواست جعلی سایت (CSRF)

در یک برنامه وب ، اساساً یک ورودی از کاربر گرفته می شود و آنها را به قسمت های سرور ارسال می کند تا آنها را پردازش کند. اجزای سمت سرور به طور کلی از روشهای POST ، PUT ، DELETE برای پذیرش داده ها از طریق HTTPاستفاده می کنند.جنگو در برابر بیشتر اشکال تهدیدهای CSRF امنیت داخلی ایجاد کرده است.

همانطور که در اسناد ذکر شده است ، هنگام علامت گذاری با دکوراتور csrf_exempt بسیار مراقب باشید ، مگر اینکه کاملاً ضروری باشد. اگر شخصی به کوکی csrftoken شما دسترسی داشته باشد ، آنگاه این یک آسیب پذیری می باشد. محافظت CSRF نمی تواند در برابر حملات انسان محافظت کند ، بنابراین از HTTPS با امنیت حمل و نقل دقیق استفاده کنید.

پس از تنظیم HTTPS ، این خطوط را در تنظیمات خود اضافه کنید.

#to avoid transmitting the CSRF cookie over HTTP accidentally.
CSRF_COOKIE_SECURE = True
#to avoid transmitting the session cookie over HTTP accidentally.
SESSION_COOKIE_SECURE = True

Cross-site Scripting (XSS)

در واقع XSS به یک مهاجم اجازه می دهد تا یک اسکریپت را به محتوای یک وب سایت یا برنامه تزریق کند. وقتی کاربر از صفحه آلوده بازدید می کند ، اسکریپت در مرورگر قربانی اجرا می شود. این به مهاجمان اجازه می دهد تا اطلاعات شخصی مانند کوکی ها ، اطلاعات حساب و غیره را سرقت کنند.

در واقع X-XSS-Protection: 1؛ mode = block فیلتر XSS را امکان پذیر می کند. در صورت شناسایی یک حمله ، مرورگر به جای آن که از صفحه محافظت کند ، از ارائه صفحه جلوگیری می کند.

برای فعال کردن آن در Django ، اطمینان حاصل کنید که django.middleware.security.SecuranceMiddleware در لیست میان افزار موجود است و خطوط زیر را در تنظیمات خود اضافه کنید:

SECURE_BROWSER_XSS_FILTER = True
SECURE_CONTENT_TYPE_NOSNIFF = True

Django Admin Security

یکی از مهمترین چیزهای که Django را ایمن می کند. قبل از استقرار برنامه خود باید admin / مسیر را به/admin تغییر دهید. در غیر این صورت ، شخصی می تواند به راحتی وارد url شود و به صفحه ورود به سیستم مدیریت دسترسی پیدا کند.

#urls.py
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls) # change admin something different
]

شما می توانید با استفاده از django-admin-honpot صفحه ورود به سیستم جعلی ایجاد کنید و در صورت تلاش برای دسترسی غیرمجاز به شما اطلاع می دهد.

SSL Redirect

خط زیر را به تنظیمات خود اضافه کنید تا Django مجبور شود تمام درخواستهای غیر HTTPS را به HTTPS تغییر مسیر دهد.

SECURE_SSL_REDIRECT = True

Content Security Policy (CSP)

اگر برنامه Django شما بزرگ است ، حاوی کد زیادی است ، و دارای بسیاری از اسکریپت ها و سبک های درون خطی است که در کل پروژه پراکنده هستند ، پس باید CSP را به سایت خود اضافه کنید.

درDjango یک روش داخلی برای ایجاد یک هدر CSP ندارد ، بنابراین می توانید ماژول django-csp Mozilla را نصب کنید و از کنسول مرورگر خود برای پیگیری نقض امنیتی در کد خود استفاده کنید.

پس از نصب django-csp ، خطوط زیر را به تنظیمات خود اضافه کنید

CSP_DEFAULT_SRC = (&quot'none'&quot, )
CSP_STYLE_SRC = (&quot'self'&quot, )
CSP_SCRIPT_SRC = (&quot'self'&quot, )
CSP_IMG_SRC = (&quot'self'&quot, )
CSP_FONT_SRC = (&quot'self'&quot, )

بنابراین ، اساساً ، تمام اسکریپت ها و سبک های درون خطی شما دیگر مجاز نخواهند بود. همه اسکریپت ها و سبک ها باید از یک منبع بارگیری شوند.

پاک کردن کد شما از همه این سبک ها و اسکریپت های درون خطی بسیار مهم است. با این حال ، برخی از منابعی مانند Google Tag Manager یا Google Analytics باید در خط مشی CSP شما مجاز باشد.

کد زیرا رو در فایل تنظیمات قرار دهدید::

CSP_DEFAULT_SRC = (&quot'none'&quot, )
CSP_STYLE_SRC = (&quot'self'&quot, &quotfonts.googleapis.com&quot, &quot'sha256-/3kWSXHts8LrwfemLzY9W0tOv5I4eLIhrf0pT8cU0WI='&quot)
CSP_SCRIPT_SRC = (&quot'self'&quot, &quotajax.googleapis.com&quot, &quotwww.googletagmanager.com&quot, &quotwww.google-analytics.com&quot)
CSP_IMG_SRC = (&quot'self'&quot, &quotdata:&quot, &quotwww.googletagmanager.com&quot, &quotwww.google-analytics.com&quot)
CSP_FONT_SRC = (&quot'self'&quot, &quotfonts.gstatic.com&quot)
CSP_CONNECT_SRC = (&quot'self'&quot, )
CSP_OBJECT_SRC = (&quot'none'&quot, )
CSP_BASE_URI = (&quot'none'&quot, )
CSP_FRAME_ANCESTORS = (&quot'none'&quot, )
CSP_FORM_ACTION = (&quot'self'&quot, )
CSP_INCLUDE_NONCE_IN = ('script-src',)

برای اطلاعات بیشتر در مورد django-csp documentation جست و جو کنید

HTTP Strict Transport Security

اگر این خط مشی تنظیم شود ، شما به درستی از منابع HTTPS استفاده نکنید یا اینکه گواهی شما منقضی شده باشد ، مرورگرها از اتصال به سایت شما برای مدت زمانی معین امتناع می ورزند.

خطوط زیر را به تنظیمات خود اضافه کنید:

SECURE_HSTS_SECONDS = 86400 # 1 day
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
جانگوdjangosecurityامنیتپایتون
Go Developer(gopher-academy.ir)
شاید از این پست‌ها خوشتان بیاید