Как исправить «это нарушает следующую директиву политики безопасности контента:« default-src 'self' », когда я использую datalist?

Когда я использую datalist с Content-Security-Policy "content="default-src 'self'", он выдает ошибку:" Отказано в применении встроенного стиля, поскольку он нарушает следующую директиву политики безопасности контента: "default-src 'self'". Для включения встроенного выполнения требуется ключевое слово 'unsafe-inline', хэш ('sha256-pIL...') или одноразовый номер ('nonce -...'). Обратите внимание, что хэши не применяются к обработчикам событий, атрибутам стиля и навигации javascript:, если не указано ключевое слово 'unsafe-hashes'. Также обратите внимание, что 'style-src' не был явно установлен, поэтому 'default-src' используется в качестве запасного варианта. ".

Список данных работает, как я надеюсь, в браузере, однако сообщение об ошибке раздражает. Поскольку я надеюсь сохранить максимальную безопасность, я не хочу менять Content-Security-Policy на unsafe-inline. Не могли бы вы мне подсказать, как это исправить?

      <!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <meta http-equiv="Content-Security-Policy" content="default-src 'self'">
</head>
<body>
   <label for="animalList" class="form-label">animal</label>
   <input class="form-control" list="animalOptions" id="animalList" placeholder="">
   <datalist id="animalOptions">
     <option value="dog">
     <option value="cat">
   </datalist>
</body>
</html>

2 ответа

Чтобы избавиться от этой ошибки, просто добавьте в свой CSP:

style-src-attr 'sha256-pILX+5FGCpLRHvNBgtABIdSMmytrYudGxJBUYXY1t0s=' 'unsafe-hashes';

Эта директива работает только в браузерах на движке Chromium и применяется к атрибуту style= . Другие браузеры будут следовать правилам. Для <style>...</style> блокирует Chrome style-src правила тоже.

Похоже, это новая ошибка в браузерах на основе хрома (включая Edge). Его нет в Firefox v89.

Другие вопросы по тегам