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, если вы не уверены, что он вам нужен. Если вам необходимо его использовать, убедитесь, что в ваш файл конфигурации добавлены только те источники, которым вы доверяете.

Вернуться на верх