Sweetalert: Совместимость политик безопасности контента

Созданный на 11 окт. 2018  ·  8Комментарии  ·  Источник: t4t5/sweetalert

В моем проекте я использовал следующий метатег (как показано на следующем скриншоте):

<meta http-equiv="Content-Security-Policy" content="default-src http:">

image

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

image

Кто-нибудь раньше сталкивался с этой проблемой?

Также, кстати, имя моего файла js - sweetalert.min.js, но содержимое файла содержит неминифицированный js!

Самый полезный комментарий

Обходной путь - добавить хеши в заголовок Content-Security-Policy .

Что-то вроде

style-src 'self' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' 'sha256-wTr/bct+DGhJCU0mVZOm9Z1v99oBZrIu4VCMYQJWdfI=';

Не идеально, но лучше, чем unsafe-inline . Проблема в том, что если файлы изменятся, хэши больше не будут совпадать, и браузер их отклонит.

Идеальной ситуацией было бы извлечь CSS в собственный файл и разместить его на CDN. Таким образом мы можем занести файл в белый список.

Все 8 Комментарий

Вам необходимо обновить значение Content-Security-Policy, чтобы учесть директиву style-src которая должна содержать 'unsafe-inline' (осторожно заключать в кавычки) для выполнения встроенных встроенных стилей.

Определенно не идеально заставлять разработчиков использовать политику unsafe-inline для CSS. Возможно, нам стоит найти лучший способ справиться с этим.

Один из способов - не импортировать файл css внутри кода и сделать его доступным в виде отдельного файла, который можно импортировать в код разработчика. что-то вроде
import 'sweetalert/sweetalert.css
Таким образом, разработчик будет обязан убедиться, что он не нарушает CSP.

Он (почти) не имеет ничего общего с тем, где находится файл CSS (если CSS находится в том же домене). Sweetalert _injects_ встроенный CSS , который любой стоящий CSP не допустит, если нет значения nonce / hash. Этим утром это причиняет мне нескончаемую боль; Возможно, мне придется отключить его от моего проекта, что очень жаль, потому что мне это очень нравится (г).

Были ли обновления по этому поводу? У меня такая же проблема; просто интересно, как лучше всего это обойти?

Обходной путь - добавить хеши в заголовок Content-Security-Policy .

Что-то вроде

style-src 'self' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' 'sha256-wTr/bct+DGhJCU0mVZOm9Z1v99oBZrIu4VCMYQJWdfI=';

Не идеально, но лучше, чем unsafe-inline . Проблема в том, что если файлы изменятся, хэши больше не будут совпадать, и браузер их отклонит.

Идеальной ситуацией было бы извлечь CSS в собственный файл и разместить его на CDN. Таким образом мы можем занести файл в белый список.

Он (почти) не имеет ничего общего с тем, где находится файл CSS (если CSS находится в том же домене). Sweetalert _injects_ встроенный CSS , который любой стоящий CSP не допустит, если нет значения nonce / hash. Этим утром это причиняет мне нескончаемую боль; Возможно, мне придется отключить его от моего проекта, что очень жаль, потому что мне это очень нравится (г).

то же самое.

Я могу получить два встроенных хэша из sweetalert.min.js в Chrome. При добавлении в заголовок CSP Chrome больше не жалуется.
Но Firefox и Safari по-прежнему жалуются, и я не могу найти правильный хеш. Эти браузеры не дают никаких подсказок.
Firefox: Content Security Policy: The page’s settings blocked the loading of a resource at inline (“style-src”)
Safari: Refused to apply a stylesheet because its hash, its nonce, or 'unsafe-inline' does not appear in the style-src directive of the Content Security Policy.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

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

voodoo6 picture voodoo6  ·  4Комментарии

krishnamraju picture krishnamraju  ·  3Комментарии

daftspunk picture daftspunk  ·  4Комментарии

fracz picture fracz  ·  4Комментарии

waldyrious picture waldyrious  ·  5Комментарии