Как включить CSP (политику безопасности контента) в Jquery 3.4.1 и Jquery-ui 1.12.1?

#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.

  1. Покажите мне текст этой ошибки CSP, и я скажу вам, что делать (предпочтительнее консоль Chrome).

  2. Как видно из CSS для jQuery-UI 1.12.1, вы должны иметь img-src data: в своей политике.

  3. Как видно из сценария 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. Итак:

и все вызовы скриптов должны выполняться с использованием 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. Если вы сможете решить, можете ли вы опубликовать свой ответ