2016-07-19 5 views
1

У меня есть большая, устаревшая кодовая база, которую я бы хотел ввести в заголовок Content-Security-Policy. В краткосрочной перспективе невозможно по-настоящему заблокировать сайт (например, есть встроенные сценарии повсюду, у которых нет автоматизированного охвата тестирования), но по крайней мере я могу начать с запрещения доступа к источникам контента, которые я знаю наверняка не используются в настоящее время, а затем медленно сотрясают его со временем.Что такое максимально разрешающая политика безопасности контента?

К сожалению, список источников, которые не используются, является довольно коротким. Это была моя первая попытка на значении Content-Security-Policy:

default-src * 'unsafe-eval' 'unsafe-inline' 

Это сломал несколько вещей, таких как images sourced using the data: scheme. Оглядываясь, я вижу a number of things you might want to include, например connect-src ws:, которые явно не вызываются в the docs.

Что такое максимально допустимое значение заголовка Content-Security-Policy, которое в основном позволяет сайту делать все, что разрешено браузером по умолчанию? Спрашивается по-другому: какое значение заголовка я могу представить, что определенно не сломает что-либо на сайте?

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

ответ

6

tl; dr использовать режим «только для отчета», чтобы ввести политику для устаревшего сайта.

См. W3.org/TR/CSP2/#source-list-guid-matching.

Как определена выше, специальные схемы URL, которые ссылаются на определенные части уникального контент, такие как «данные:», «сгусток:» и «файловая система:» являются исключены из соответствия политики * и должны быть явно перечисленным.

Для этого что-то вроде строк default-src * 'unsafe-eval' 'unsafe-inline' 'unsafe-dynamic' data: filesystem: about: blob: ws: wss:, вероятно, близко к самой мягкой политике. Разумеется, есть больше протоколов, которые, возможно, должны быть белыми.


ОДНАКО

Обычно люди принимают противоположный подход. Они будут разворачивать заголовок с Content-Security-Policy-Report-Only: default-src 'none', который не повлияет на загрузку вашего сайта и позволит вам снизить вашу политику на основании нарушений или предупреждений консоли.

Я настоятельно рекомендую вам начать с caspr chrome extension, чтобы создать начальную политику, а затем использовать report-uri.io для просмотра нарушений отчета. Когда ваша политика кажется стабильной, а нарушения минимальны, переключите свою политику на принудительный режим.

+1

Прохладный. Я особенно ценю, что вы оба ответили на вопрос, как было задано, и указали, что это лучший способ сделать это (расширение caspr и использование режима отчетности, который я упустил). Я собираюсь попробовать. –

Смежные вопросы