内容安全策略(CSP)旨在通过为开发人员提供对允许加载页面的资源以及允许执行的脚本的细粒度控制来降低跨站点脚本攻击的风险。
让我们有一个包含一个 的外页,其中包含另一个 <iframe>。 内部页面有一个 Content-Security-Policy 标头,其框架祖先仅允许中间页面...</desc> <question vote="0"> <p>让我们有一个包含一个 <pre><code><iframe></code></pre> 的外页,其中包含另一个 <pre><code><iframe></code></pre>。</p> <p>内页有一个 <pre><code>Content-Security-Policy</code></pre> 标题,其中 <pre><code>frame-ancestors</code></pre> 只允许中间页。</p> <p>中间页面有一个 <pre><code>Content-Security-Policy</code></pre> 标题,其中 <pre><code>frame-ancestors</code></pre> 只允许外页。</p> <p>此设置是否有效,还是内页必须同时具有 <pre><code>frame-ancestors outer middle</code></pre>?</p> <p>或者 <pre><code>frame-ancestors outer</code></pre> 对于内页来说就足够了吗?这当然不适用于中间页面作为主窗口,但是对于外部页面作为主窗口呢?</p> <pre><code><body> Outer page my URL is: https://outer <iframe src="https://middle"> Middle page my URL is: https://middle my SCP frame-ancestors is: outer <iframe src="https://inner"> Inner page my URL is: https://inner my SCP frame-ancestors is: middle </iframe> </iframe> </body> </code></pre> </question> <answer tick="false" vote="0"> <p>正如规范在 <a href="https://www.w3.org/TR/CSP3/#frame-ancestors-navigation-response" rel="nofollow noreferrer">https://www.w3.org/TR/CSP3/#frame-ancestors-navigation-response</a> 的第一段中所述,如果一个或多个祖先违反了框架,则应阻止它 -祖先指示。这还包括重定向。浏览器中有不同的实现,但预计它在某些浏览器中是可传递的。因此,您需要在框架祖先中设置资源的所有祖先。</p> </answer> </body></html>
带有express和头盔nonce的Angular ssr如何处理?
我有一个由express托管的角度ssr应用程序。我正在使用谷歌分析,现在我想使用头盔.js 来强化我的应用程序。 现在我面临谷歌分析
这是我尝试将条带与前端集成时的实际错误消息。 拒绝框架“https://js.stripe.com/”,因为它直接违反了以下内容安全政策...
我目前正在开发一个React应用程序,该应用程序使用@stripe/react-stripe-js(版本“^1.9.0”)和@stripe/stripe-js(版本“^1.32.0”)集成Stripe支付)npm
出于安全目的,我想在我的 jenkins url(https://jenkins.example.com)中实现 CSP(内容安全策略)标头,我使用此脚本来更改 CSP #!/bin/bash # 定义
Firefox 似乎忽略了阻止 Base64 编码字体的内容安全策略
当我嵌入在 css 中使用 base64 编码的字体(woff 和 otf 都不起作用)时,firefox 会抱怨 CSP。 可下载字体:字体加载失败(字体系列:“测试”样式:正常粗细:400
我正在使用本地 html 文件中的数据 URL 创建一个 Web Worker。该文件具有安全上下文,但工作人员没有。规格说明它们应该是相同的。我搞砸了吗,是规格错误还是......
我在 php 网站上使用以下 CSP,一切正常,除了 Chrome 中的报告之外,它显然使用像 Edge 一样的报告端点: 标题(“内容安全策略:
我目前正在开发一个项目,将前端应用程序部署到 S3 存储桶,然后使用 CloudFront 提供服务。我正在使用 AWS CDK 进行设置。这是我当前的配置...
我的问题不是如何设置 CSP。我知道。然而,我确实有一个关于其他人如何使用 Wordpress 处理他们的 CSP 的问题。 WordPress 核心包括内联样式和脚本,这是一个
设置 CSP 随机数是否应该在 Node Express 中神奇地工作?
当我尝试此操作时,作为helmet.js 设置的一部分,我收到错误。 'script-src': ["'self'", (req, res) => `'nonce-${res.locals.cspNonce}'`], 它可以通过 http://127.0.0.1:3000/...
上下文 我有一个 VueJs 单页应用程序(实际上只有一个 HTML 文件),我想对其应用内容安全策略 (CSP)。这是托管在子域上,由共享主机提供服务,我...
Infor M3 / IOS(Infor 操作系统)中的浏览器跨域问题
我有一个使用适用于 H5 的 M3 TypeScript SDK(M3 Web 客户端)编写的应用程序。该程序正在 Windows 上的 Chrome 中的 M3/H5 中运行。用于处理信用卡付款,并且
拒绝应用内联样式,因为它违反了 style-src 的以下内容安全策略指令
我已经从我的应用程序中删除了之前存在的所有内联CSS。 但我仍然收到错误“拒绝应用内联样式,因为它违反了以下内容安全......
我正在使用Azure的OpenAI API服务,最近发现它对中文内容的内容过滤太严格。使用中文的时候,无论怎么修改,都无法通过c...
Vimeo 播放器在没有内容安全策略的情况下工作正常,但是当我在项目中添加 CSP 时,vimeo 播放器停止工作并给出屏幕截图中给出的错误。还添加了网址...
我有一个 Blazor 服务器端,我添加了以下标签: 我有 Blazor 服务器端,我添加了以下标签: <meta http-equiv="Content-Security-Policy" content="base-uri 'self'; default-src 'self'; img-src data: https:; object-src 'none'; script-src 'self'; style-src 'self' 'unsafe-inline'; upgrade-insecure-requests;"> 我收到以下错误: 拒绝连接到'http://localhost:58126/c5f3e2f1da1843188844fd8515c3ca3b/browserLinkSignalR/negotiate?requestUrl=https%3A%2F%2Flocalhost%3A44350%2FDashboard&browserName=&userAgent=Mozilla%2F5.0+(Windows+NT+10 .0%3B +Win64%3B+x64)+AppleWebKit%2F537.36+(KHTML%2C+like+Gecko)+Chrome%2F109.0.0.0+Safari%2F537.36&browserIdKey=window.browserLink.initializationData.browserId&browserId=2655-11e6&clientProtocol= 1.3&_=1675268211057',因为它违反了以下内容安全策略指令:“default-src 'self'”。请注意,“connect-src”未明确设置,因此“default-src”用作后备。 和 拒绝连接到“wss://localhost:44393/KeyAccount.Web/”,因为它违反了以下内容安全策略指令:“default-src 'self'”。请注意,“connect-src”未明确设置,因此“default-src”用作后备。 如何解决这些问题? 内容安全策略是代码中潜在安全错误的缓存。它会禁用您不会使用的部分浏览器功能。在您的情况下,csp(Microsoft 文档中的默认值¯\(°_o)/¯)禁用太多。 我遇到了同样的错误,并将我的 csp 更新到以下版本。我应该禁用更多才能有效。 <meta http-equiv="Content-Security-Policy" content="base-uri 'self'; default-src 'self'; connect-src * ws: http: https: 'self'; img-src data: https:; object-src 'none'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; upgrade-insecure-requests;">
我有一个 CSP 元标记,如下所示: 我有一个 CSP 元标记,如下所示: <meta http-equiv="Content-Security-Policy" content="font-src 'self' 'unsafe-inline' data:; img-src 'self' data:; style-src 'self' 'unsafe-inline' data:; script-src 'unsafe-eval' 'unsafe-inline' data:; default-src 'self' localhost:*"> 我在 body 标签内有一个本地 JavaScript 文件引用: <script src="js/video.min.js"></script> 以及标题标记中的本地样式表文件引用: <link href="css/video-js.css" rel="stylesheet" /> 但是,我的浏览器出现以下错误,拒绝从 CSS 文件加载脚本或字体。 拒绝加载脚本“https://localhost:44356/js/video.min.js”,因为它违反了以下内容安全策略指令:“script-src 'unsafe-eval' 'unsafe-inline' data:” 。请注意,“script-src-elem”未明确设置,因此“script-src”用作后备。 2testvideo.html:1 拒绝加载字体 'data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABDkAAsAAAAAG6gAAQAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAAPgAAAFZRiV3hY21hcAAAAYQAAADaAAADPv749/pnbH lmAAACYAAAC3AAABHQZg6OcWhlYWQAAA3QAAAAKwAAADYZw251aGhlYQAADfwAAAAdAAAAJA+RCLFobXR4AAAOHAAAABBMAAACM744AAGxvY2EAAA4wAAAASAAAAEhF6kqubWF4cAAADngAAAAfAAAAIAE0AIFuYW1lAAAOMmAAAASUAAAIK1cf1oHBvc3QAAA/AAAAB JAAAAdPExYUNeJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGS7wTiBgZWBgaWQ5RkDA8MvCM0...2DDXbYkhKc+V0Bqs5Zt9JM1HQGBRTm/Eez TmZNKtpCAMs9Yu6AK9caF76zoLWIWcfMGOSkVduvSWechqZsz040Ib2PY3urxBJTzriT95lipz+TN1fmAAAAeJxtkMl2wjAMRfOAhABlKm2h80C3+ajgCKKDY6cegP59TYBzukAL+z1Zsq8ctaJTTKPrsUQLbXQQI 0EXKXroY4AbDDHCGBNMCYsZ7nCPB8yxwCOe8IwXvOIN7/ jAJ76wxHfUqWX+OzgumWAjJMV17i0Ndlr6irLKO+qftdT7i6y4uFSUvCknay+lFYZIZaQcmfH/xIFdYn98bqhra1aKTM/6lWMnyaYirx1rFUQZFBkb2zJUtoXeJCeg0WnLtHeSFc3OtrnozNw qi0TkSpBMDB1nSde5oJXW23hTS2/T0LilglXX7dmFVxLnq5U0vYATHFk3zX3BOisoQHNDFDeZnqKDy9hRNawN7Vh727hFzcJ5c8TILrKZfH7tIPxAFP0BpLeJPA==',因为它违反了以下内容安全策略指令:“font-src *”。 据我所知,第一个脚本没有违反内容安全策略,并且在我能找到的任何地方都没有任何描述“script-src-elem”的文档(这可能是一个线索)。 就 CSS 中的字体而言,浏览器中似乎存在一个错误,因为没有看起来像“font-src *”的 CSP 指令 - 所以,浏览器以某种方式覆盖了这个 CSP(或者它只是一个错误) )。 不管怎样,我一直在尝试各种组合(例如,我不能将“self”放入 script-src 中,否则会出现更多错误)。没有任何意义! 这是完整的 HTML: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="Content-Security-Policy" content="font-src 'self' 'unsafe-inline' data:; img-src 'self' data:; style-src 'self' 'unsafe-inline' data:; script-src 'unsafe-eval' 'unsafe-inline' data:; default-src 'self' localhost:*"> <title></title> <link href="css/video-js.css" rel="stylesheet" /> </head> <body> <video id='my-video' class='video-js' controls preload='auto' width='640' height='360' poster='/videos/Factory_Clearance30_03_16.jpg' data-setup='{}'> <source src="/videos/Factory_Clearance30_03_16.webm" type="video/webm"> <source src="/videos/Factory_Clearance30_03_16.ogv" type="video/ogg"> <source src="/videos/Factory_Clearance30_03_16.mp4" type="video/mp4"> </video> <script src="js/video.min.js"></script> </body> </html> 第一个脚本不违反内容安全策略 政策说: script-src 'unsafe-eval' 'unsafe-inline' data:; 您使用以下命令加载脚本: <script src="js/video.min.js"></script> 那么,让我们依次检查一下: 是unsafe-eval吗?不,您没有使用 eval() 或类似的东西来加载脚本。这是一个 src 属性。 是unsafe-inline吗?不,它不是内联的;这是一个 src 属性。 是data:吗?不可以。它是相对 URL,不能相对于 data: schema URL。您可能正在使用 http:。 所以它肯定确实违反了CSP。 您可能想将 'self' 添加到允许的来源。 就 CSS 中的字体而言,浏览器中似乎存在一个错误,因为没有看起来像“font-src *”的 CSP 指令 - 所以,浏览器以某种方式覆盖了这个 CSP(或者它只是一个错误) ). 对此最可能的解释是,您通过 HTTP 标头 和 <meta> 提供 CSP,并且 HTTP 标头具有优先级(因为规范要求这样做)。
我正在尝试将哈希与我的内容安全策略一起使用...... 以下是我的控制台中的两个示例错误: 拒绝执行内联脚本,因为它违反了以下内容安全策略
我有一个静态网站,因此我将我的 CSP 插入到网站标题块顶部的元标记中: 我有一个静态网站,因此我将 CSP 插入网站 meta 块顶部的 head 标签中: <meta http-equiv="Content-Security-Policy" content="base-uri 'self'; default-src 'none'; img-src 'self'; font-src https://fonts.gstatic.com; manifest-src 'self'; style-src 'self' https://fonts.googleapis.com; script-src 'self'; style-src-elem 'unsafe-inline';> 假设我的网站是example.com,我在控制台中收到以下错误: Refused to load the stylesheet 'https://example.com/main.css' because it violates the following Content Security Policy directive: "style-src-elem 'unsafe-inline'". 如果我从 CSP 中删除 style-src-elem 'unsafe-inline',我就可以很好地加载我的 CSS 文件(但我收到了一个不同的错误,即未加载包含 React 似乎生成的代码的 script 标签)。我不确定为什么 CSP 规则 style-src 'self' https://fonts.googleapis.com 和 style-src-elem 'unsafe-inline' 似乎相互冲突。 我知道使用unsafe-inline并不理想,但对于没有用户交互的静态网站,我相信它很好。 当浏览器实现了对 style-src 的支持时,style-src-elem 优先于 style-src。当您仅将“unsafe-inline”定义为唯一源时,仅允许内联脚本,您无法从任何位置加载文件。当您删除 style-src-elem 时,它会回退到 style-src ,它允许从“self”(同源)加载。脚本文件问题没有足够的细节来评论。