Django за Apache и Traefik и CSRF
Я использую Cookiecutter Django в качестве стартера для своих проектов, и он использует Traefik (внутри контейнера Docker) для генерации сертификатов с помощью Let's Encrypt. Однако моя компания требует использования Apache в качестве прокси-сервера для всех серверов, а управлением сервером Apache занимается другая команда.
Для этого я отключил генерацию сертификатов Traefik, внес необходимые изменения в конфигурацию и т. д. Все работало правильно, за исключением защиты CORS. При каждом POST-запросе я сталкивался с ошибкой 403, а в журнале появлялось следующее предупреждение:
WARNING 2024-02-09 08:49:15,953 log Forbidden (Origin checking failed - https://example.com does not match any trusted origins.): /accounts/login/
После исследования я обнаружил, что добавление параметра CSRF_TRUSTED_ORIGINS решает мою проблему. Добавление CSRF_TRUSTED_ORIGINS=https://example.com
в мой конфигурационный файл решило проблему.
Мой вопрос: считается ли такой подход небезопасным?
Да, добавление CSRF_TRUSTED_ORIGINS
в файл конфигурации небезопасно.
Параметр CSRF_TRUSTED_ORIGINS
используется для указания списка источников, которым можно доверять при выполнении межсайтовых запросов к вашему Django-приложению. Добавляя здесь https://example.com
к вашей настройке, вы, по сути, говорите Django доверять любому запросу, приходящему с этого конкретного домена.
Это может быть опасно, если вы небрежны, потому что злоумышленник может создать вредоносный сайт, который обманом заставит пользователей отправлять формы на вашем сайте.
Лучше не использовать CSRF_TRUSTED_ORIGINS
, если вы не уверены, что он вам нужен. Если вам необходимо его использовать, убедитесь, что в ваш файл конфигурации добавлены только те источники, которым вы доверяете.