内容安全策略(CSP)旨在通过为开发人员提供对允许加载页面的资源以及允许执行的脚本的细粒度控制来降低跨站点脚本攻击的风险。
为什么web.config中的Content-Security-Policy设置没有效果?
在一个小型 ASP.NET MVC 测试应用程序中,我将适当的 httpProtocol 代码添加到 web.config 文件中,如本文所述: 在一个小型 ASP.NET MVC 测试应用程序中,我将适当的 httpProtocol 代码添加到 web.config 文件中,如本文中所述: <system.webServer> <handlers> <remove name="BlockViewHandler"/> <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> </handlers> <httpProtocol> <customHeaders> <add name="Content-Security-Policy" value="default-src 'self'" /> </customHeaders> </httpProtocol> </system.webServer> 但是,在应用程序的测试页面上,Vue.js 代码仍然有效,因为它是从 CDN 加载的,所以内容安全策略应该阻止它。 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Home Page2 - Meine ASP.NET-Anwendung</title> <link href="/Content/bootstrap.css" rel="stylesheet"/> <link href="/Content/site.css" rel="stylesheet"/> <script src="/Scripts/modernizr-2.6.2.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.4/vue.js"></script> </head> <body> <div class="container mainMenu"> <ul> <li><a href="/">Start Page</a></li> <li><a href="/Home/About">About</a></li> <li><a href="/Home/Contact">Contact</a></li> <li><a href="/Home/Info">Info</a></li> </ul> </div> <div class="container body-content"> <hr/> <div id="app"> this is a test: <b>{{message}}</b> </div> <script> var app = new Vue({ el: '#app', data: { message: 'Vue.js ready' } }); </script> <hr/> <footer> <p>The footer</p> </footer> </div> <script src="/Scripts/jquery-1.10.2.js"></script> <script src="/Scripts/bootstrap.js"></script> <script src="/Scripts/respond.js"></script> </body> </html> 我需要做什么才能使内容安全策略在我的网站中真正生效? 附录 我可以在我的开发工具中看到,内容安全策略没有在响应标头中发送: 看到您问题中下面的配置块,让我假设您已将 <httpProtocol><customHeaders> ... 部分添加到 web.config 文件夹中的 Views 文件,而不是网站根目录中的 web.config 文件。 <system.webServer> <handlers> <remove name="BlockViewHandler"/> <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> </handlers> </system.webServer>
Dojo 解析器:当不允许使用 unsafe-eval 的 CSP 时,new Function() 会抛出错误
我们使用 Dojo v1.17.3 和内容安全策略(不允许使用 unsafe-eval。 当定义 onclick 时,下面的行会给出解析器错误。 如果没有 onclick,上面的行工作正常。 错误详情 : 电子...
我们已经使用Java过滤器类实现了在Angular中添加CSP标头的代码。在角度方面,我们也实现了shared_styles_hosts.ts。现在,我们可以看到 CSP 标头,但是
在 Firefox 中我收到以下错误: 内容安全策略:页面的设置阻止加载数据处的资源:(“media-src”)。 我不确定为什么我在主持时会收到此错误...
作为 FLP 中启用“异步模块加载”准备工作的一部分,其先决条件之一是确保不会因 HTML 文档被加载而触发 eval 调用...
实现 jekyll-content-security-policy-generator —— 不生成 CSP
我正在尝试使用 jekyll-content-security-policy-generator gem 将 CSP 元标记添加到 Jekyll 站点,但它似乎不起作用。按照说明,我添加了 jekyll-content-
我正在尝试在新网站上实施内容安全政策。我可以看到 Chrome 的网络选项卡中设置了以下 HTTP 标头。 内容安全策略:默认 src 'self' https: 怎么...
使用 Firebase 时从内容安全策略中删除“unsafe-inline”作为“script-src”
我想从我的网络应用程序的内容安全策略中删除“script-src”中的“unsafe-inline”,并提高其安全性。但不幸的是,Firebase 似乎需要它才能
我正在使用 Helmet 并收到以下 console.log 消息之一: :3000/:48 拒绝执行内联脚本,因为它违反了 以下内容安全策略指令:“script-src ......
我目前正在为使用 Next.js 制作的生产应用程序制定内容安全策略 (CSP)。虽然我找到了使用该框架实施 CSP 的可靠文档,但有...
我的 Chrome 扩展内容脚本之一正在对这样的元素执行单击功能 varcurrencySelectorLink = document.getElementById('switcher-info'); 货币选择器链接.click();
我的申请有一点问题。我想配置一个 CSP 标头来应对所有 XSS 潜在漏洞。但我有这个错误: 未捕获的 EvalError:对 eval() 的调用被 CSP 阻止...
我正在开发的 Google Chrome 扩展程序不断抛出 CSP 错误
我正在创建一个仅供个人使用的 Chrome 扩展程序。我需要它来监视对 https://www.instagram.com/api/graphql 发出的任何请求并记录响应(即将其转发给另一个
我已将 CSP 添加到我的 Nextjs (v14.0.4) 项目中。当我在开发模式下运行项目时,我可以看到随机数被添加。但是,当我构建并启动项目时,随机数不会添加到...
我的 ReactJS 应用程序的公共 index.html 中有以下内容: 我的 ReactJS 应用程序的公共 index.html 中有以下内容: <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval' localhost blob base64 https://js.stripe.com https://apis.google.com https://www.googletagmanager.com" /> <meta http-equiv="Content-Security-Policy" content="style-src 'unsafe-inline' 'self'" /> <meta http-equiv="Content-Security-Policy" content="default-src 'unsafe-inline' 'self'" /> 在 Safari 中,我仍然收到以下控制台错误: Refused to execute a script because its hash, its nonce, or 'unsafe-inline' does not appear in the script-src directive of the Content Security Policy. Refused to load blob:https://m.stripe.network/XXX because it does not appear in the script-src directive of the Content Security Policy. Refused to load https://js.stripe.com/v3 because it appears in neither the script-src directive nor the default-src directive of the Content Security Policy. Refused to load https://apis.google.com/js/api.js because it appears in neither the script-src directive nor the default-src directive of the Content Security Policy. 这些是否有任何理由违反 CSP? 您已将 CSP 拆分为 3 个不同的策略,并且所有内容都需要通过所有策略。在您的情况下,您加载的脚本还必须传递default-src,它只允许“self”和“unsafe-inline”。将您的 CSP 重写为“default-src ...; script-src ...; style-src ...;”这应该修复从其他主机加载的脚本。 Blob 是一个方案,需要重写为 blob: 并带有尾随冒号。 base64 可以删除。
如何在 script-src CSP 策略标头中正确设置哈希值?
我正在尝试让 SCP 使用哈希值。 我将哈希值插入到标头 (Content-Security-Policy) 和 html 页面中。 当我禁用 CSP 并仅使用 SRI 时,一切正常。但是……
我正在使用 Express,并且遇到 CSP 问题: 拒绝从“blob:http://localhost:4000/bda8488f-14b5-4906-ab95-03f78146af69”创建工作线程,因为它违反了以下内容安全策略
我的网站的 script-src 继续产生错误并拒绝加载位于 Header.html 文件中的脚本,并且我尝试了多个网站,包括阅读文档,但是...
我正在添加内容安全策略以使谷歌标签管理器正常工作。根据说明,建议使用随机数。 所以在我的 Index.html 中,我添加了这样的内容安全策略 我正在添加内容安全策略以使谷歌标签管理器正常工作。根据说明,建议使用随机数。 所以在我的 Index.html 中,我添加了这样的内容安全策略 <meta http-equiv="Content-Security-Policy" script-src 'nonce-{GENERATED_NONCE}'" /> 作为一个对编程很陌生的人,我不明白如何动态更改 .html 文件内的随机数值。因为它需要为每个客户端唯一生成。 我尝试在index.js 中生成如下所示的随机数值。我不确定在这里添加它是否正确,也不知道如何将此值带入index.html。 const GENERATED_NONCE = crypto.randomBytes(16).toString("base64");. 有人可以帮助我吗? 您有后端基础设施吗?如果是这样,您可以从后端设置 http 标头,而不是在 HTML 中放置 CSP 标头,这将允许随机生成的随机数设置为标头。 nonce 的主要症结是:nonce 必须为每个页面请求重新生成,并且它们必须是不可猜测的。 使用 webpack 构建 React 应用程序,在 webpack 配置中,NonceInjector 插件用于在脚本和样式 HTML 标签中为属性 nonce 放置一个占位符 (NONCE)。 const HtmlWebpackPlugin = require("html-webpack-plugin"); class NonceInjector { constructor(NONCE_PLACEHOLDER) { this.NONCE_PLACEHOLDER = NONCE_PLACEHOLDER; } apply(compiler) { compiler.hooks.thisCompilation.tap("NonceInjector", (compilation) => { HtmlWebpackPlugin.getHooks(compilation).afterTemplateExecution.tapAsync( "NonceInjector", (compilation, callback) => { const { headTags } = compilation; headTags.forEach((tag) => { tag.attributes.nonce = this.NONCE_PLACEHOLDER; }); callback(null, compilation); } ); }); } } module.exports = NonceInjector; 在 webpack 配置中使用 NonceInjector 插件插入 nonce 占位符。 然后生成的脚本和样式标签将添加 NONCE。 <script defer="defer" src="/static/js/main.0405c3f1.js" nonce="_NONCE_" ></script> <link href="/static/css/main.f855e6bc.css" rel="stylesheet" nonce="_NONCE_" /> 现在在每个请求中使用一些服务器脚本将占位符随机数=“NONCE”替换为真正的随机数哈希值 您可以在此处阅读更多 GitHub 代码示例:https://www.hectane.com/blog/react-content-security-policy-webpack-node-nginx
我正在尝试调整安全标头。服务器是阿帕奇。该网站基于 wordpress。我已经修改了这个文件十次,我已经将它上传到服务器十次了,但我仍然......