微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

实现“Content-Security-Policy”标头后无法加载我的 java 脚本文件

如何解决实现“Content-Security-Policy”标头后无法加载我的 java 脚本文件

我正在我的 ASP.NET MVC 项目中实现 Content-Security-Policy 标头,但我的 JS 脚本不起作用。

添加了这个标签

<add name="Content-Security-Policy" value="default-src 'self'; script-src 'self' https://code.jquery.com" />

如您所见,我为脚本文件添加了 CDN 源。

如果我在最后添加 unsafe-inline 会起作用,但我认为这不是重点。

任何帮助将不胜感激!

解决方法

如果我在最后添加 unsafe-inline 它会起作用,但我相信这不是重点。

如您所见,页面上有一些内联脚本。主要问题是 - 是吗:

  1. <script>...</script>
  2. 或内联事件处理程序(例如 <tag onload='...'
  3. 或 javascript:-navigation(例如 <a href='void(0)')。

因为 (2) 和 (3) 需要强制 'unsafe-inline'(或代码重构)。
可以通过 'hash-value''nonce-value' 允许第一个。

Google Chrome 浏览器在控制台错误消息中的所有这 3 种类型的内联脚本都不同:

  1. Refused to execute inline script ...
  2. Refused to execute inline event handler ...
  3. Refused to run the JavaScript URL ...

在 (2) 的情况下,您必须用 some way 替换所有 <tag onclick='...'>addEventListener()

在 (3) 的情况下,您必须将 <a href='void(0)'> 替换为 <a href='#'> 或以任何其他方式从标签中删除 javascript navitagtion。

如果 (1) 你有选择:

  • 将 Chrome 控制台中违规消息中的 'sha256-...' 添加到 script-src 指令中(如果这些指令不多)。

  • 使用'nonce-value'。最简单的方法是使用 configure CSP NWebsec
    Websec 包包含 HtmlHelpers 以添加脚本和样式“随机数”。

ASP 4 中的示例:

@using NWebsec.Mvc.HttpHeaders.Csp
<script @Html.CspScriptNonce()>var inline = 5;</script>

ASP Core 的示例:

<script nws-csp-add-nonce="true">var inline = 5;</script>

或者,您可以override HtmlTextWriter method将随机数添加到脚本/样式标签中。

由于您没有提供有关您的案例的任何具体信息,因此可能会出现很多“If-Then-Else”。无论如何,无法准确回答如此广泛的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。