در این مقاله قصد دارم چک لیست امنیتی اولیه که برای deploy کردن یک پروژه جنگو نیاز است را معرفی کنم
در مرحله اول با اجرای دستور زیر خود جنگو پروژه شما را بررسی میکند . اگر نکته یا پیشنهادی برای شما داشت به شما معرفی میکند از جمله صفحاتی که به حملات XSS یا Anti forgery-token آسیبپذیر هستند رامعرفی میکند
python manage.py check --deploy
در بخش تنظیمات خود جنگو یعنی فایل setting.py نکات زیر را اعمال کنید
در مرحله اول نیاز است تا کلید رمزنگار جنگو و پروژه خود را به environment سرور لینوکسی خود منتقل کنید در این مرحله کلید را که در تنظیمات شما با نام SECRET_KEY است با با دستور زیر به سرور خود منتقل کنید
export SECRET_KEY=<SECRET_KEY>
و جایگزین این کلید کد زیر را قرار دهید
import os SECRET_KEY = os.environ['SECRET_KEY']
خب تا این مرحله ۲ قسمت را گفتیم سخت که نبود مرحله بعدی ما این است که Debug را False کنیم تا خطاهای اصلی سیستم را به کاربر با اطلاعات بسیاری که در خود را را نبیند.
DEBUG = True
در تنظیمات پایگاه دادهایی رمز پایگاه خود را به صورت text نگه ندارید و میتوانید مانند SECRET_KEY درهمان environment نگهداری کنید.
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'educa', 'USER': 'educa', 'PASSWORD': '*****', } }
در تنظیمات خود این قسمت را قرار دهید تا تمامی خطا های رخ داده برای مدیر سیستم در حال Debug =False ارسال گردد
ADMINS = ( ('Antonio M', 'email@mydomain.com'), )
سرور خود را بر روی HTTPS تنظیم کنید و فلگهای زیر را اعمال کنید:
CSRF_COOKIE_SECURE=True SESSION_COOKIE_SECURE=True
لاگ گیری را فعال کنید
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'filters': {
'special': {
'()': 'project.logging.SpecialFilter',
'foo': 'bar',
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': {
'file_error': {
'level': 'ERROR',
'class': 'logging.FileHandler',
'filename':
},
این قسمت کوچکی از تنظیمات امنیتی بود سعی میکنم در آینده این مقاله را تکمیل کنم.
https://www.packtpub.com/product/django-3-by-example-third-edition/9781838981952
https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/#logging