【问题标题】:How to enable CSP(Content Security Policy) in Jquery 3.4.1 & Jquery-ui 1.12.1?如何在 Jquery 3.4.1 和 Jquery-ui 1.12.1 中启用 CSP(内容安全策略)?
【发布时间】:2020-09-26 18:11:23
【问题描述】:

我目前在我的网站上使用 jQuery 3.4.1jQuery-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';

每当在 jQuery-UI 自动完成中发生 AJAX 调用时,它都会抛出一个错误,指出它违反了 CSP 政策。

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

控制台错误:

【问题讨论】:

  • 很确定这将归结为 server 配置,您还没有告诉我们。什么在为您的内容提供服务?
  • 实际上,我的网络服务器中没有配置 CSP。我在我的 HTML 文件中使用 CSP 的元标记。正如你所问的,apache 正在为我的内容提供服务。
  • 然后在此处添加元标记作为编辑。
  • 我已经添加了。请检查一下。
  • 问题是正确的,但还没有人提供有用的答案。谁能告诉如何使用“nonce”属性和示例来使 jquery.js 工作?

标签: javascript jquery jquery-ui-autocomplete content-security-policy


【解决方案1】:

每当在 jQuery-UI 自动完成中发生 AJAX 调用时,它都会抛出一个 错误提示它违反了 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:&lt;script src='https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js'...

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

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

【讨论】:

猜你喜欢
  • 2021-12-26
  • 2013-10-09
  • 2015-07-28
  • 2023-01-07
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
  • 2022-09-24
相关资源
最近更新 更多