Questions tagged «content-security-policy»

3
内容安全策略如何工作?
我在开发人员控制台中收到很多错误: 拒绝评估字符串 拒绝执行内联脚本,因为它违反了以下内容安全策略指令 拒绝加载脚本 拒绝加载样式表 这是怎么回事?内容安全策略如何工作?如何使用Content-Security-PolicyHTTP标头? 具体来说,如何... ...允许多个来源? ...使用不同的指令? ...使用多个指令? ...处理端口? ...处理不同的协议? ...允许的file://协议? ...使用内联样式,脚本和标签<style>以及<script>? ...允许eval()吗? 最后: 到底是什么'self'意思?

2
内容安全政策“数据”不适用于Chrome 28中的base64图像
在这个简单的示例中,我尝试使用meta http-equiv标头设置CSP标头。我添加了一个base64图像,并且试图使Chrome加载该图像。 我以为data关键字应该这样做,但是以某种方式它不起作用。 我在开发人员工具中收到以下错误: 拒绝加载图片'data:image / png; base64,R0lGODlhDwAPAOZEAMkJCfAwMMYGBtZMTP75 + euIiPFBP + hVVf3v7 ... nw7yk4Mjr6GLUY + joiBI2QAACABwJDCHgoNGHEoAYVBAgY8GGA'A'ACCA'A'AVACA 示例代码(JSFiddle在本示例中不起作用,因为我无法在此处设置元头): <html> <head> <meta http-equiv="Content-Security-Policy" content=" default-src 'none'; style-src 'self' 'unsafe-inline'; img-src 'self' data; " /> <style> #helloCSP { width: 50px; height: 50px; background: url(data:image/png;base64,R0lGODlhDwAPAOZEAMkJCfAwMMYGBtZMTP75+euIiPFBP+hVVf3v7+iHh/JNTfh9dNUYGPjTvskXFfOLi/daVe96es4eHPWIiOqbi9dNRvzWwexdV9U1NeFSS94iIvuxodVGP/ZsZM8jI+ibm/alluQzMdxSSvbGstwsKu2Yid4iIfjQu/JnYO6djvajlMQEBPvLuOJdXeMxL/3jzPBSTdwqKNY2Mf3i4vU5OfbPz/3f3/zUv/zizO0tLc0NDfMzM+UlJekpKeEhId0dHdUVFdkZGdEREf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEQALAAAAAAPAA8AAAepgESCRBsLEDQQCxuDgxYdO5CROx0WgywGAQEKM0M2CpkGN0QvMDmmE0OpE6Y5KEQqPbE9D6lDD7I9IBc8vDwRtRG9PBcuPsY+B7UHxz4hP8/PGghDCBrQPyYxQdvbBUMF3NskGUDl5QwtDOblGSVC7+8JNQnw7yk4Mjr6GLUY+joiBI2QAACABwJDCHgoKOHEoAYVBAgY8GGAxAoNGAmiwMHBCgccKDAKBAA7) no-repeat; border: 1px solid red; } </style> </head> <body> …


6
内容安全策略:该页面的设置阻止了资源的加载
我在页面加载中使用了CAPTCHA,但是由于某些安全原因而被阻止。 我正面临这个问题: 内容安全策略:页面的设置阻止了加载 的资源 http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit (“ script-src http://test.com:8080'unsafe-inline''unsafe-eval'”)。 我使用了以下JavaScript和meta标签: <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"> <script src="http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit" async defer></script>

9
拒绝加载脚本,因为它违反了以下内容安全策略指令
当我尝试将应用程序部署到5.0.0(Lollipop)以上的Android系统的设备上时,我不断收到以下错误消息: 07-03 18:39:21.621:D / SystemWebChromeClient(9132):file:///android_asset/www/index.html:第0行:拒绝加载脚本“ http:// xxxxx”,因为它违反了以下内容安全策略指令:“ script-src'self''unsafe-eval''unsafe-inline'”。07-03 18:39:21.621:I / chromium(9132):[INFO:CONSOLE(0)]“拒绝加载脚本'http:// xxx',因为它违反了以下内容安全策略指令:” script- src'self''unsafe-eval''unsafe-inline'“。 但是,如果我将其部署到Android系统为4.4.x(KitKat)的移动设备上,则安全策略可与默认策略一起使用: <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *"> 然后我想,也许我应该改成这样: <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval' 'unsafe-inline'; object-src 'self'; style-src 'self' 'unsafe-inline'; media-src *"> 基本上,这两个选项都不适合我。我该如何解决这个问题?

2
我可以在iframe中使用window.location.replace吗?
我们可以使用它window.location.replace来避免历史记录,并定位页面锚,而无需重新加载页面,但不能在iframe中使用吗? 问题是违反了CSP(内容安全策略),script-src 'unsafe-inline'必须启用该状态。除非我没有定义CSP,即使我定义了一个CSP并允许script-src 'unsafe-inline'它仍然给出相同的违规错误。在ie11 / chrome / ff中得到相同的结果。 iframe位于同一域(位于同一目录中)。 在控制台中定位iframe并在控制台中使用window.location.replace('/samepage.html#onpage_anchor')。 有用。 它以页面锚为目标,而无需重新加载页面和历史记录。 将相同的代码内联在锚链接上,它可以工作。 在外部脚本中使用相同的代码,获取csp违规错误。 如果不在iframe中,则效果很好。 我试图创建一个CSP允许的动作,但即使是在最宽松的内容安全策略可能会允许它。 编辑:所以我将示例放到允许多个文件的插件上,这样我就可以使用引用父/子页面的正确hrefs。 有关示例的示例的注释: 这些示例中未重现该问题。 该脚本即使在iframe中也可以完美运行。但是,相同的代码在我的本地服务器上不起作用,或者当我在VPS上实时运行该代码时。 我怀疑在plunker上不会触发CSP违规,因为plunker通过某种抽象层将内容呈现给浏览器。 第一次单击父级中的手风琴链接时,它会刷新。这是因为页面最初加载的方式没有引用index.html。后续点击将按预期工作,而无需重新加载页面。在iframe中这不是问题,因为它最初会引用child.html 这些是显示代码而无需进行任何更改即可使其工作的很好的示例(如需要更改href使其在stackoverflow代码段中工作,如下所述)。这也很好,因为它显示了javascript应当正常工作。但这并没有显示出实际的问题。您仍然需要在编辑器中加载它,然后在本地服务器或实时托管环境中运行它,才能看到真正的问题。 柱塞示例 有脚本: 无历史记录 无脚本: 有历史记录 简化的代码示例 一键输入的简单手风琴。足以重现问题。 单击打开/关闭将展开/折叠手风琴,不需要JS。JS应该做完全相同的事情,但是没有历史记录。工作正常,但不能在iframe中使用。 代码段注释: 您可以运行该代码段以了解我所描述的内容,但实际上并不能证明问题所在。 该代码段的行为与实际浏览器中的行为不同,JavaScript无法正常工作。 该代码段显示了代码,但应在iframe中运行以查看问题。在iframe外部运行它,以查看差异以及其工作原理。 由于链接如何与JS配合使用(替换整个url),因此它们实际上必须像这样,href="https://stackoverflow.com/thispage.html#ac1"而不是 href="#ac1"像它们出现在代码段中一样(不能以代码段中的实际html页面为目标)。因此,如果您在编辑器中尝试此操作 (请这样做),请记住将链接更改为此格式, this_document.html#anchor以使它们仍然是相同的页面定位点,但是page.html包含在链接中。 显示代码段 $(document).ready(function() { // anchor links without history $.acAnch = function(event) …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.