Sha hash не соблюдается в CSP style-src

У меня есть веб-приложение ASP.NET, в котором используется asp-validation-summary. Из-за этого к элементу HTML на моей странице добавляется строчный style.

Это дает мне следующую ошибку в консоли (Chrome v78.0.3904.108), когда я запускаю свое приложение:

Отказался от применения встроенного стиля, поскольку он нарушает следующую директиву политики безопасности контента: "style-src 'self' https://fonts.googleapis.com ". Для включения встроенного выполнения требуется либо ключевое слово 'unsafe-inline', либо хэш ('sha256-aqNNdDLnnrDOnTNdkJpYlAxKVJtLt9CtFLklmInuUAE ='), либо одноразовый номер ('nonce -...').

Итак, я добавил хеш в свой CSP, который теперь выглядит так:

style-src 'self' https://fonts.googleapis.com 'sha256-aqNNdDLnnrDOnTNdkJpYlAxKVJtLt9CtFLklmInuUAE=';

Когда я загружаю свою страницу, я все равно получаю аналогичную ошибку:

Отказался от применения встроенного стиля, поскольку он нарушает следующую директиву политики безопасности контента: "style-src 'self' https://fonts.googleapis.com 'sha256-aqNNdDLnnrDOnTNdkJpYlAxKVJtLt9CtFLklmInuUAE =' ". Для включения встроенного выполнения требуется либо ключевое слово 'unsafe-inline', либо хэш ('sha256-aqNNdDLnnrDOnTNdkJpYlAxKVJtLt9CtFLklmInuUAE ='), либо одноразовый номер ('nonce -...').

Это весь заголовок CSP:

X-Content-Security-Policy: default-src 'self'; object-src 'none'; frame-ancestors 'none'; sandbox allow-forms allow-same-origin allow-scripts; base-uri 'self'; upgrade-insecure-requests; style-src 'self' https://fonts.googleapis.com 'sha256-aqNNdDLnnrDOnTNdkJpYlAxKVJtLt9CtFLklmInuUAE='; font-src 'self' https://fonts.gstatic.com;

Как видите, я добавил хеш, как указано в ошибке. Это также похоже на .

Но почему это не работает?


person Vivendi    schedule 26.11.2019    source источник
comment
У меня точно такая же проблема. Я также проверил, что предложенный хэш правильный, и проверил свой CSP.   -  person christianhanvey    schedule 15.06.2020
comment
Тот же вопрос, было бы неплохо, если бы на него уже ответили. :)   -  person Fariz Fakkel    schedule 16.07.2020
comment
Возможное объяснение этого поведения: stackoverflow.com/a/52795613/1023562   -  person Ivan Jovović    schedule 11.09.2020


Ответы (1)


Вы должны добавить unsafe-hashes.
unsafe-hashes позволяет включить определенные встроенные обработчики событий. Если вам нужно разрешить только встроенные обработчики событий, а не встроенные элементы или URL-адреса javascript:, это более безопасный метод по сравнению с использованием небезопасного встроенного выражения.

Источник: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src

person Ladislav Pospíšil    schedule 25.07.2020
comment
Есть ли безопасный способ сделать это? Бесит то, что добавление хэшей не работает, пока вы не добавите ключевое слово unsafe-hashes, и очень сбивает с толку то, что что-то, нацеленное на встроенные обработчики событий, действительно необходимо для встроенных стилей. - person John T.; 19.05.2021