Политика безопасности контента работает как положено на настольном компьютере, но не на мобильном - PullRequest
0 голосов
/ 05 мая 2018

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

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

1 Ответ

0 голосов
/ 09 мая 2018

В CSP, если вы включите одноразовый номер для script-src или style-src, unsafe-inline будет игнорироваться , если браузер распознает одноразовые номера . Поэтому, чтобы быть совместимыми со старыми браузерами, которые не понимают CSP2 (например, Safari на iOS 9 и более ранних версиях), включите ваш nonce И unsafe-inline.

Новые браузеры будут следовать одноразовым номерам и игнорировать unsafe-inline. Старые браузеры не понимают одноразовый номер и поэтому возвращаются к unsafe-inline.

См. https://csp.withgoogle.com/docs/strict-csp.html

script-src nonce- {random} 'unsafe-inline'

Директива nonce означает, что элементам будет разрешено выполнять только в том случае, если они содержат атрибут nonce, соответствующий случайно сгенерированному значению, которое указано в политике.

Примечание. При наличии одноразового номера CSP директива unsafe-inline будет игнорироваться современными браузерами. Старые браузеры, которые не поддерживают одноразовые номера, будут видеть unsafe-inline и позволять выполнять встроенные сценарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...