Django CSP Разрешить iframe из домена без необходимости устанавливать CSP для всего остального
Мне нужно разрешить другому домену встраивать мой сайт в iframe. Я могу использовать Django CSP для достижения этой цели, задав следующее, предполагая, что example.com
- это домен, который будет размещать iframe моего сайта.
CSP_FRAME_ANCESTORS = ("'self'", 'example.com')
Я бы хотел, чтобы Django работал так, как он работает из коробки, то есть без CSP (поправьте меня, если я ошибаюсь). В таком случае, как я могу добиться этого с помощью моей конфигурации CSP?
В настоящее время у меня есть это, но оно не ловит все, и я не уверен, является ли оно менее безопасным, чем Django из коробки, или тем же самым.
CSP_DEFAULT_SRC = ("'self'", '*')
CSP_FRAME_ANCESTORS = ("'self'", 'example.com')
Похоже ли это на то, как django работает по умолчанию, или я сделал свое приложение менее безопасным, настроив его таким образом?
Да, с помощью:
CSP_DEFAULT_SRC = ("'self'", '*')
CSP_FRAME_ANCESTORS = ("'self'", 'example.com')
вы сделали свое приложение безопасным, потому что многие неопределенные директивы будут возвращаться к default-src 'self' *
. Это означает, что скрипты/стили/iframes/объекты/etc разрешено загружать из любых внешних источников.
Как я понимаю, вы используете пакет django-csp
от Mozilla. В нем есть значения по умолчанию для всех директив (они выделены курсивом).
Если вы хотите сохранить настройки CSP по умолчанию для всех директив, кроме frame-ancestors
одной, вы можете использовать декоратор для изменения настроек CSP_FRAME_ANCESTORS
по умолчанию.