#javascript #jquery #jquery-ui-autocomplete #content-security-policy
#javascript #jquery #jquery-ui-автозаполнение #content-security-policy
Вопрос:
В настоящее время я использую jQuery 3.4.1 и jQuery-UI 1.12.1 (для автозаполнения) на своем веб-сайте. Я также использую unsafe-inline
и unsafe-eval
который я не хочу использовать.
Мой <meta/>
тег:
<meta
http-equiv="Content-Security-Policy"
content="script-src 'self' 'unsafe-eval' https: cdnjs.cloudflare.com code.highcharts.com stackpath.bootstrapcdn.com cdn.jsdelivr.net code.jquery.com 'unsafe-inline'; connect-src 'self' news.google.com; worker-src 'self'; manifest-src 'self';"
>
Расширенный, то content
есть:
script-src
'self'
'unsafe-eval'
https:
cdnjs.cloudflare.com
code.highcharts.com
stackpath.bootstrapcdn.com
cdn.jsdelivr.net
code.jquery.com
'unsafe-inline';
connect-src
'self'
news.google.com;
worker-src
'self';
manifest-src
'self';
Всякий раз, когда вызов AJAX происходит в автозаполнении jQuery-UI, он выдает ошибку, в которой говорится, что это нарушает политику CSP.
Что мне нужно сделать, чтобы правильно включить CSP на моем веб-сайте с помощью jQuery? Я не хочу использовать unsafe-eval
and unsafe-inline
на своем веб-сайте.
Комментарии:
1. Уверен, что это будет зависеть от конфигурации сервера , о которой вы нам не рассказали. Что обслуживает ваш контент?
2. На самом деле, я не настроил CSP на своем веб-сервере. Я использую мета-тег для CSP в моем HTML-файле. Как вы и просили, apache обслуживает мое содержимое.
3. Затем добавьте сюда мета-тег в качестве редактирования.
4. Я добавил. пожалуйста, проверьте это.
5. вопрос правильный, но пока никто не дал полезного ответа. Может кто-нибудь, пожалуйста, рассказать, как использовать атрибут «одноразовый номер» с примером, чтобы сделать jquery.js работать?
Ответ №1:
Всякий раз, когда вызов AJAX происходит в автозаполнении jQuery-UI, он выдает ошибку, в которой говорится, что это нарушает политику CSP.
-
Покажите мне текст этой ошибки CSP, и я скажу вам, что делать (предпочтительнее консоль Chrome).
-
Как видно из CSS для jQuery-UI 1.12.1, вы должны иметь
img-src data:
в своей политике. -
Как видно из сценария 1.12.1/jquery-ui.js — он не использует небезопасные вызовы eval. Может быть, вы используете их в своих скриптах. Удалите ‘unsafe-eval’ из script-src и проверьте ошибки, возникающие в консоли. Если нет сообщений типа
Refused to evaluate a string as JavaScript because unsafe-eval is not an allowed
илиthe page's settings blocked the loading of a resource at eval
— вам не нужно иметь ‘unsafe-eval’ в script-src..
Лучше всего забыть о небезопасном HTTP: и использовать HTTPS:. Были случаи, когда интернет-провайдеры (в RU-сегменте Интернета) вмешивались в трафик клиента и вводили рекламу в jquery lib. Итак:
-
Правило
connect-src 'self' news.google.com;
должно бытьconnect-src 'self' https://news.google.com;
начиная с news.google.com всегда возвращается к HTTPS:. Все $ ajax-запрос на news.google.com следует также использовать схему https://. -
то же самое с cdn.jsdelivr.net , он всегда перенаправляет на HTTPS: поэтому безопасные правила должны быть:
script-src ‘self’ ‘unsafe-eval’ https://cdnjs.cloudflare.com https://code.highcharts.com https://stackpath.bootstrapcdn.com https://cdn.jsdelivr.net https://code.jquery.com
и все вызовы скриптов должны выполняться с использованием HTTPS: <script src='https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js'...
Когда вы указываете только scheme-source https:
в script-src, это приводит к нулевой защите, поскольку любые источники будут разрешены через https:.
Это дополнительно помогает избежать проблем блокировки смешанного контента.
Комментарии:
1. github.com/jquery/jquery/issues/3541 Я думаю, что проблема связана с самим jQuery. Если вы сможете решить, можете ли вы опубликовать свой ответ