如何解决如何在Jquery 3.4.1和Jquery-ui 1.12.1中启用CSP内容安全策略?
我目前在我的网站上使用 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策略。
要使用jQuery在我的网站上正确启用CSP,我需要怎么做?我不想在我的网站上使用unsafe-eval
和unsafe-inline
。
解决方法
只要AJAX调用在jQuery-UI自动完成中发生,它就会抛出一个 错误,说它违反了CSP政策。
-
请向我显示此CSP错误的文本,然后告诉您该怎么做(最好使用Chrome控制台)。
-
从jQuery-UI 1.12.1的CSS中可以看出,您需要在策略中加入
img-src data:
。 -
从脚本1.12.1 / jquery-ui.js可以看出-它不使用不安全的eval调用。也许您在脚本中使用了它们。从script-src移除'unsafe-eval'并检查控制台中引发的错误。 如果没有
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
之类的消息-您不需要在script-src中包含“ unsafe-eval”。。
最佳做法是忘记不安全的HTTP:并使用HTTPS:。在某些情况下,Internet提供程序(在Internet的RU段中)会干扰客户端的流量,并将广告注入到jquery lib中。所以:
-
规则
connect-src 'self' news.google.com;
应该为connect-src 'self' https://news.google.com;
,因为news.google.com始终会停用到HTTPS :。对news.google.com的所有$ ajax请求也都应使用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'...
当您在script-src中仅指定scheme-source https:
时-会导致零保护,因为可以通过https:允许任何来源。
这另外有助于避免混合内容阻塞的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。