由于内容安全策略错误,我的所有脚本都无法加载

问题描述 投票:0回答:1

我正在使用 Node.js 开发 Web 应用程序,并面临内容安全策略 (CSP) 问题。浏览器控制台抛出以下错误: 拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self' https://code.jquery.com https://stackpath.bootstrapcdn.com https://cdn。 jsdelivr.net”。启用内联执行需要“unsafe-inline”关键字、哈希值(“sha256-N0rggt9yUvHkalXLct5AQfw7XF4kunOGpKpVyUEkLww=”)或随机数(“nonce-...”)。 我知道 CSP 正在阻止内联脚本执行,因为我没有明确允许它。但是,我不确定如何使用“unsafe-inline”在不影响安全性的情况下解决此问题。

这是我的 Content-Security-Policy 标头中的内容: 内容安全策略: script-src 'self' https://code.jquery.com https://stackpath.bootstrapcdn.com https://cdn.jsdelivr.net; 我尝试过以下方法:

使用随机数:我不完全确定如何为内联脚本动态生成和应用随机数。 使用哈希:我尝试使用脚本哈希,但我不清楚如何生成正确的哈希以及将其放置在哪里。 在保持安全标准的同时修复此错误的最佳方法是什么?我是否应该修改标头以包含随机数或哈希值,如果是,如何在我的 Node.js 应用程序中实现它?

任何用于在 CSP 下安全处理内联脚本的指南或示例代码将不胜感激。

我使用的脚本包括来自外部 CDN 的 jQuery 和 Bootstrap。 我的服务器是使用 Node.js 和 Express 构建的。 出于安全考虑,我试图避免使用“不安全内联”指令。

content-security-policy
1个回答
0
投票

您的浏览器建议您添加一个哈希值:“sha256-N0rggt9yUvHkalXLct5AQfw7XF4kunOGpKpVyUEkLww=”。但是,只有当脚本是静态的并且要添加的脚本哈希集有限时,您才应该添加此内容。

如果脚本不是静态的,即具有一些可变元素,您将需要使用随机数或动态生成的哈希。这通常意味着您需要对脚本进行哈希处理并动态在策略中设置哈希值,或者您需要生成一个随机数并将其传递给您的策略和脚本随机数属性。

© www.soinside.com 2019 - 2024. All rights reserved.