如何在Jquery 3.4.1和Jquery-ui 1.12.1中启用CSP内容安全策略?

问题描述

我目前在我的网站上使用 jQuery 3.4.1 jQuery-UI 1.12.1 (用于自动完成)。我也正在使用不想使用的unsafe-inlineunsafe-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策略。

要使用jQuery在我的网站上正确启用CSP,我需要怎么做?我不想在我的网站上使用unsafe-evalunsafe-inline

控制台错误:

Console error image

解决方法

只要AJAX调用在jQuery-UI自动完成中发生,它就会抛出一个 错误,说它违反了CSP政策。

  1. 请向我显示此CSP错误的文本,然后告诉您该怎么做(最好使用Chrome控制台)。

  2. 从jQuery-UI 1.12.1的CSS中可以看出,您需要在策略中加入img-src data:

  3. 从脚本1.12.1 / jquery-ui.js可以看出-它不使用不安全的eval调用。也许您在脚本中使用了它们。从script-src移除'unsafe-eval'并检查控制台中引发的错误。 如果没有Refused to evaluate a string as JavaScript because unsafe-eval is not an allowedthe page's settings blocked the loading of a resource at eval之类的消息-您不需要在script-src中包含“ unsafe-eval”。

最佳做法是忘记不安全的HTTP:并使用HTTPS:。在某些情况下,Internet提供程序(在Internet的RU段中)会干扰客户端的流量,并将广告注入到jquery lib中。所以:

所有调用脚本均应使用HTTPS:<script src='https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js'...

当您在script-src中仅指定scheme-source https:时-会导致零保护,因为可以通过https:允许任何来源。

这另外有助于避免混合内容阻塞的问题。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...