Django Docs предлагает SecurityMiddleware находится рядом с верхом вашего Промежуточное программное обеспечение
Настройки по причинам.
Готов к проблеме безопасности Django? Играть наш Задача безопасности Django .
X-Content-Type-options
SecurityMiddleware
Устанавливает . X-Content-Type-options
Заголовок к Nosniff
Для предотвращения хакеров обмануть ваш веб-сайт в выполнении вредоносного файла JavaScript, который они загружены.
Этот заголовок указывает на браузеру, что типы MIME, рекламируемые в заголовках типа содержимого, не должны быть изменены (путем «нюхает» содержимого). Функция нюхания – это браузер, который будет полезен, когда разработчик или ошибка сервера неправильно разработаны Content-Type
Отказ Если браузер уважал неправильный тип MIME, то файл JavaScript, CSS или Image не будет работать, и сайт сломается. Очень полезная особенность. Но это можно злоупотребиться, поскольку следующие простое доказательство понятия показывает:
# settings.py MIDDLEWARE = [ # "django.middleware.security.SecurityMiddleware", "django.middleware.common.CommonMiddleware", "django.contrib.sessions.middleware.SessionMiddleware", ... ] SECURE_CONTENT_TYPE_NOSNIFF = False # pre-Django 3.0 it was False by default. Post 3.0 it's True # views.py class HomePage(View): def get(self, *args, **kwargs): # simulate a misconfgured server that returns a response that has no content type response = HttpResponse("") del response['Content-Type'] return response
Результат при навигации на Главная страница
Показывает «хак» работал:
Это простые доказательства концепции, смоделировали следующую сложную ситуацию:
- Плохой актер загрузил HTML, содержащий JavaScript (может быть, притворяется файлом изображения).
- Файл был подан вашим сайтом, но не устанавливает тип MIME в заголовке типа содержимого
- Браузер выделил тип MIME на основе содержимого
- Браузер выполнил JavaScript
Это было бы избежать, если мы SecurityMiddleware
присутствует и Nosniff
Функция активна:
# settings.py MIDDLEWARE = [ "django.middleware.security.SecurityMiddleware", "django.middleware.common.CommonMiddleware", "django.contrib.sessions.middleware.SessionMiddleware", ... ] SECURE_CONTENT_TYPE_NOSNIFF = True
Затем браузер не падает в трюк:
X-XSS-защита
SecurityMiddleware
Устанавливает . XSSS-Protection
Заголовок к 1;
Когда Secure_browser_xss_filter
это Правда
Чтобы включить встроенную защиту браузера XSS.
Эта защита XSS была в основном заменена CSP Отказ Старые браузеры все еще поддерживают эту функцию, но многие браузеры удалили эту функцию. Пользователи со старыми браузерами все еще важны для удовлетворения, потому что безопасность вашего сайта не может предположить, что все выполняют последнюю версию Chrome.
Без SecurityMiddleware
и Secure_browser_xss_filter
Тогда сайт не получит выгоду от защиты от Многие возможные XSS атаки Отказ
Политика референта
SecurityMiddleware
Устанавливает заголовок политики релей на основе Secure_referrer_policy
, который влияет на конфиденциальность пользователя И является вектором атаки для плохих актеров, направленных на Dupe пользователей, думая, что они все еще на вашем сайте.
Заголовок списков можно злоупотреблять целевой веб-сайтом: возможно, секреты на вашем сайте URL утечка. Более просино, может быть, плохой актер может добавить ссылку на свой веб-сайт. Затем цель затем прочитает заголовок списка и стиль их веб-сайта, чтобы выглядеть как ваш сайт. Пользователь, не обращая внимания, может подумать, что они все еще на вашем сайте, потому что:
- Ваш сайт связан с ним
- Похоже, ваш сайт
Таким образом, пользователь может затем вводить учетные данные и личные данные на сайте плохого актера.
Это может быть предотвращено, не подвергая заголовозу от списка по настройкам Secure_referrer_policy
, который затем обрабатывается SecurityMiddleware
.
Clickjing
См. Взлом веб-сайтов Django Часть 2: Clickjaning
Пересекать запрос на сайт подделка
См. Хакеты веб-сайтов Django Часть 3: CSRF
SSL перенаправить
SecurityMiddleware может перенаправлять HTTP-соединения к HTTPS, если Secure_ssl_redirect
установлен на Правда
Отказ
Если вы не перенаправляете HTTP https, то пароли и личная информация будут транспортироваться на открытом тексте, а A Человек в середине мог прочитать их.
См. Взлом веб-сайтов Django Часть 4: Человек посередине
Есть ли у вашего сайта уязвимости безопасности?
Со временем это легко для уязвимостей безопасности и технологического долга, чтобы проскользнуть в вашу кодовую базу. Я могу проверить это для вас в django.doctor или может Просмотрите свой GitHUB PRS :
Или попробуйте Рефакторы Django Challenges Отказ
Оригинал: “https://dev.to/djangodoctor/hacking-django-websites-30f”