Политика безопасности контента запрещает коды внутри моего JQuery Script - PullRequest
0 голосов
/ 18 марта 2019

Вот мои политики в коде JSP:

enter image description here

Я использую следующие сценарии с CSP:

nonce

<script src="/xx/xxxxxx/jquery-x.x.x.js" type="text/javascript" charset="utf-8" nonce="<%=nonce%>"></script>
<script src="/xx/xxxxxx/xxxxxx.js" type="text/javascript" charset="utf-8" nonce="<%=nonce%>"></script>

Результат в Chrome:

enter image description here

Когда я пытаюсь нажать на ошибку, я вижу2 ошибки в файле jQuery (обратите внимание, что ниже приведены 2 ошибки не моего кода, а файла jquery.xxxjs)

Первое:

enter image description here

Второй:

enter image description here

Теперь, как мне исправить 2 проблемы без использования этого CSP?

небезопасно-inline

Многие говорят, что выше, и unsafe-eval не рекомендуется использовать, например: https://barryvanveen.nl/blog/47-how-to-prevent-the-use-of-unsafe-inline-in-csp

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Спасибо @jro за ответы - я попытался обновить мои jquery и jqtouch до более новых версий, и это продолжается до сих пор.Хотя сейчас у меня есть функциональные проблемы - но, конечно, это будет другая история.

0 голосов
/ 18 марта 2019

Для первой ошибки:

innerHTML div, который вы вставляете во время выполнения, содержит элемент <a> с атрибутом style. Это нарушение вашего CSP, так как этот конкретный тег не имеет одноразового номера.

Решение

Неразумно использовать одноразовый номер для этого тега, так как он вставляется во время выполнения, и одноразовый номер следует добавлять на стороне сервера HTML.

Я бы порекомендовал переместить CSS в другой файл и включить файл с помощью тега ссылки

HTML:

<!-- Other html -->

<link href="./style.css" rel="stylesheet">

style.css


a#someId {
  color: red;
  float: left;
  opacity: .55;
}

Обратите внимание, что ваш JS потребует некоторой модификации, так как созданный тег <a> должен иметь атрибут id, который будет выбран CSS

script.js


div.style.display = "none";
div.innerHTML = "   <link/><table></table><a href='/a' id='someID' >a</a><input type='checkbox'/>"

Для второй ошибки:

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

Однако, это, вероятно, аналогичная проблема с первым. Простым решением было бы переместить динамически добавленные сценарии в другой файл и включить этот файл с тегом сценария.

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