Рубрики
Без рубрики

Django Web Security Checklist перед развертыванием | Защитите приложение Django

Привет, сеть, сеть! Вы уже знаете, что веб-безопасность важна для защиты хакеров и кибер-теков от … Tagged с Python, Django, Security, WebDev.

Вы уже знаете, что веб-безопасность важна для предотвращения доступа к конфиденциальной информации хакеров и кибер-тевей. Итак, в этом посте мы собираемся проверить уязвимости безопасности Django и как их исправить.

Канал YouTube с видеоуроками – Обратный питон youtube

Контрольный список развертывания

Во -первых, сначала проверьте свои уязвимости безопасности, следуя команде:

manage.py check --deploy

Вы можете увидеть некоторые описания, которые предоставляют информацию о ваших уязвимости веб -приложения Django. Попробуйте Google эти проблемы безопасности и исправить их до производства.

Обсерватория Мозилла

Если вы уже развернули приложение, используйте Обсерватория Mozilla Сайт, чтобы сканировать статус безопасности вашего сайта. Сайт также включает сторонние сканеры, которые проверяют другие аспекты безопасности вашего сайта.

Вот пример сканирования:

Защита подделки по перекрестной подделке (CSRF)

В веб-приложении, в основном, WebForms получают ввод от пользователя и отправляют их в компоненты на стороне сервера для их обработки. Компоненты на стороне сервера, как правило, выявляют сервис в качестве сообщения, поместить, удаляйте методы для принятия данных по HTTP. Джанго обладает встроенной безопасностью от большинства форм угроз CSRF, если вы разрешили и использовали ее, если это необходимо.

Как указано в Документация , будьте очень осторожны, отмечая виды с csrf_exempt декоратор, если это не абсолютно необходимо.

Если у кого-то есть доступ (через атаку человека в среднем или XSS) к вашим csrftogen cookie, то это уязвимость.

Защита CSRF не может защитить от Человек-в-средне атаки, так что используйте Https Со строгой транспортной безопасностью HTTP (мы обсудим это в посте позже).

После того, как вы настроили HTTPS, добавьте эти строки в свой настройки.py

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

Сценарии поперечного сайте (xss)

Сценарий поперечного сайта (XSS) позволяет злоумышленнику вводить сценарий в содержимое веб-сайта или приложения. Когда пользователь посещает зараженную страницу, сценарий выполнит в браузере жертвы. Это позволяет злоумышленникам красть личную информацию, такую как файлы cookie, информация об учетной записи и т. Д.

X-XSS-защита: 1; Включает XSS -фильтрацию. Вместо того, чтобы дезинфицировать страницу, браузер предотвратит рендеринг страницы, если будет обнаружена атака.

Чтобы включить его в Django, убедитесь, что django.middleware.security. SecurityMiddleware присутствует в списке промежуточного программного обеспечения и добавьте следующие строки в вашем настройки.py :

SECURE_BROWSER_XSS_FILTER = True
SECURE_CONTENT_TYPE_NOSNIFF = True

Django Admin Security

Одна из самых важных вещей – сделать администрацию Джанго безопасной. Прежде чем развернуть свое заявление, вы должны изменить администратор/ Путь к чему -то, что вы знаете. В противном случае кто -то может легко ввести/администратор в 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-honeypot И это уведомит вас, если кто -то попытается попытаться несанкционированный доступ.

SSL перенаправление

Добавьте следующую строку в свой настройки.py Чтобы заставить Django перенаправить все запросы без HTTPS на HTTPS.

SECURE_SSL_REDIRECT = True

Политика безопасности контента (CSP)

Если ваше приложение Django велико, содержит много стороннего кода и имеет много встроенных сценариев и стилей, разбросанных по всему проекту, то вам следует добавить CSP на свой сайт.

Для получения дополнительной информации о посещении CSP Введение в политику безопасности контента

У Django нет встроенного метода для создания заголовка CSP, поэтому вы можете установить Mozilla’s django-csp Модуль и используйте консоль вашего браузера для отслеживания нарушений безопасности в вашем коде.

После установки Django-CSP добавьте следующие строки в свой настройки.py

# Content Security Policy
CSP_DEFAULT_SRC = ("'none'", )
CSP_STYLE_SRC = ("'self'", )
CSP_SCRIPT_SRC = ("'self'", )
CSP_IMG_SRC = ("'self'", )
CSP_FONT_SRC = ("'self'", )

Таким образом, в основном ваши все встроенные сценарии и стили больше не будут разрешены. Все сценарии и стили должны быть загружены из ресурса. Вы можете добавить «небезопасно» к своему сценарию и заголовкам стиля CSP, однако это отрицает всю политику.

Очень важно очистить свой код из всех этих встроенных стилей и сценариев. Тем не менее, некоторые внешние ресурсы, такие как Google Tag Manager или Google Analytics, должны быть разрешены в вашей политике CSP. Чтобы достичь этого обновления вашего кода так:

#Content Security Policy
CSP_DEFAULT_SRC = ("'none'", )
CSP_STYLE_SRC = ("'self'", "fonts.googleapis.com", "'sha256-/3kWSXHts8LrwfemLzY9W0tOv5I4eLIhrf0pT8cU0WI='")
CSP_SCRIPT_SRC = ("'self'", "ajax.googleapis.com", "www.googletagmanager.com", "www.google-analytics.com")
CSP_IMG_SRC = ("'self'", "data:", "www.googletagmanager.com", "www.google-analytics.com")
CSP_FONT_SRC = ("'self'", "fonts.gstatic.com")
CSP_CONNECT_SRC = ("'self'", )
CSP_OBJECT_SRC = ("'none'", )
CSP_BASE_URI = ("'none'", )
CSP_FRAME_ANCESTORS = ("'none'", )
CSP_FORM_ACTION = ("'self'", )
CSP_INCLUDE_NONCE_IN = ('script-src',)

Подробнее информация посмотрите Django-CSP документация Анкет

Обратите внимание, что эта конфигурация зависит от того, какие внешние ресурсы вы используете, поэтому, пожалуйста, сначала Прочитайте документацию а затем примените изменения на вашем сайте.

HTTP строгая транспортная безопасность

Когда эта политика будет установлена, браузеры откажутся подключаться к вашему сайту в течение данного периода времени, если вы не обслуживаете ресурсы HTTPS, или если истекает ваш сертификат.

Добавьте следующие строки в свой настройки.py :

SECURE_HSTS_SECONDS = 86400  # 1 day
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True

Миссия выполнена!

Теперь ваше приложение почти безопасно. Кроме того, вы можете сканировать открытые порты, используя nmap И попробуйте Google, как исправить эти открытые порты.

Если вам понравился пост, пожалуйста, посетите Обратный питон И поделитесь этим со своими друзьями!

Оригинал: “https://dev.to/coderasha/django-web-security-checklist-before-deployment-secure-your-django-app-4jb8”