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

django securityشما می دانید که امنیت وب برای جلوگیری از دسترسی هکرها و سارقان فضای مجازی به اطلاعات ورودی حساس می باشد. بنابراین ، در این پست قصد داریم آسیب پذیری های امنیتی جنگو و چگونگی رفع آنها را بررسی کنیم.چک لیست استقراراول از همه ، دستور زیر را در قسمت پروژه جانگو خود وارد کنید:Python3 manage.py check --deployخروجی به شما توضیحاتی در مورد آسیب پذیری برنامه وب Django ارائه می دهد.خوب بریم کم کم ببینم چی رو باید رعایت کنیم ✍?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 = TrueCross-site Scripting (XSS)در واقع XSS به یک مهاجم اجازه می دهد تا یک اسکریپت را به محتوای یک وب سایت یا برنامه تزریق کند. وقتی کاربر از صفحه آلوده بازدید می کند ، اسکریپت در مرورگر قربانی اجرا می شود. این به مهاجمان اجازه می دهد تا اطلاعات شخصی مانند کوکی ها ، اطلاعات حساب و غیره را سرقت کنند.در واقع X-XSS-Protection: 1؛ mode = block فیلتر XSS را امکان پذیر می کند. در صورت شناسایی یک حمله ، مرورگر به جای آن که از صفحه محافظت کند ، از ارائه صفحه جلوگیری می کند.برای فعال کردن آن در Django ، اطمینان حاصل کنید که django.middleware.security.SecuranceMiddleware در لیست میان افزار موجود است و خطوط زیر را در تنظیمات خود اضافه کنید:SECURE_BROWSER_XSS_FILTER = TrueSECURE_CONTENT_TYPE_NOSNIFF = TrueDjango Admin Securityیکی از مهمترین چیزهای که Django را ایمن می کند. قبل از استقرار برنامه خود باید admin / مسیر را به/admin تغییر دهید. در غیر این صورت ، شخصی می تواند به راحتی وارد url شود و به صفحه ورود به سیستم مدیریت دسترسی پیدا کند.#urls.pyfrom django.contrib import adminfrom django.urls import pathurlpatterns = [path('admin/', admin.site.urls) # change admin something different]شما می توانید با استفاده از django-admin-honpot صفحه ورود به سیستم جعلی ایجاد کنید و در صورت تلاش برای دسترسی غیرمجاز به شما اطلاع می دهد.SSL Redirectخط زیر را به تنظیمات خود اضافه کنید تا Django مجبور شود تمام درخواستهای غیر HTTPS را به HTTPS تغییر مسیر دهد.SECURE_SSL_REDIRECT = TrueContent 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 daySECURE_HSTS_INCLUDE_SUBDOMAINS = TrueSECURE_HSTS_PRELOAD = True