问题标签 [content-security-policy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 在 Firefox 中使用 CSP 的 Javascript 小书签
我有一个简单的 Javascript 小书签,我将它放在一起用于针对外部工具运行适当的 GitHub 存储库的内容:
当我在 Chrome 或 IE 中运行它时(在通过 Daring Fireball 的 JS 书签生成器运行它之后,它工作正常。在 Firefox 中,它会生成内容安全策略错误:
我已经阅读了关于该主题的这个 SE 问题,以及关于 CSP 的 github 博客文章,其中承认 CSP 不应该干扰小书签,但当时(2013 年 4 月),“没有一个浏览器能做到这一点。” 目前是 Firefox 仍然会出错,但 Chrome 和 IE 会出错吗?
我还发现了一篇关于用户脚本和 CSP 的博客文章,作者能够通过包含来自 github 存储库的代码来解决这个问题。我试过了,将我的书签修改为:
但不出所料,这对小书签不起作用,因为调用代码仍然来自浏览器。
简而言之 - 关于如何让这个小书签在 Firefox 上工作的任何想法?
google-chrome - 如何使用 chrome 扩展运行不安全的内容
我正在使用 chrome 扩展来添加 https://* 页面,但是当我想从 http://* 加载页面时,chrome 阻止了该页面说:
[阻止] https://* 的页面运行来自 http://* 的不安全内容。
所以我想知道,是否有任何方法或 API 可以避免这种情况?
javascript - CSP 安全的 ES6 模板文字
是否有一个模板引擎可以解析ES6 模板文字(例如"string ${var}"
)样式的模板,而不会违反脚本评估的内容安全策略 (CSP) 限制?
CSP 对脚本评估的限制阻止eval
限制、new Function
和.setTimeout(string)
setInterval(string)
有许多模板引擎可以提供或修改以提供类似 ES6 样式的模板文字,例如 John Resig 的MicroTemplates、 lodash _.template 和DoT.js。然而,所有似乎都违反了 CSP 使用new Function
.
如果var
可以是不受限制的 Javascript,在某些方面会很方便,但由于明显的原因,这可能是不可能的。但是,我需要能够修改引擎以根据需要格式化输出。
在这种情况下,性能不是问题,并且预编译模板不是一种选择。其他人有讨论了预编译。
作为附加限制,内容是文本,而不是 HTML。因此,我认为 Knockout 或 PURE 等面向 DOM 的模板引擎不会有效地工作。
我的第一个想法是从mustache.js开始并从那里修改它(即更改mustache.tags = ['${', '}']
或DIY 解决方案,但我会很感激有关该主题的任何想法,因为似乎很少有关于 CSP 和模板的讨论.
javascript - chrome 扩展的内容安全策略问题
尝试通过 chrome 扩展应用程序中的 javascript 在“iframe”中加载不同的内容(可以是 pdf、swf 等)。使用数据 URL 方案加载内容,如下所示:
// 此 javascript 在 html 文件中注册,并且 LoadFunction 在单击按钮时在 DOMContentLoaded 事件中注册。
但只要调用上述函数,就会引发内容安全策略错误:
拒绝从 'data:application/pdf;base64,JVBERi0xLjQNCiXi48/TDQoxIDAgb2JqDQo8PA0KL1R5cGU...mRvYmoNCjkgMCBvYmoNCjw8DQovVHlwZSAvRm9udA0KL1N1YnR5cGUgL1R5cGUxDQovQmFzZUZ' 加载插件数据,因为它违反了“以下”安全指令“默认”策略
但令人惊讶的是,当数据 url 更改为 'data:image/png;base64,' + 'base64 encoded data'; 时不会引发此错误。并且图像成功加载到 iframe 中。
据我所知,仅当内联代码直接执行到 html 文件时才会引发此错误,但这里不是这种情况,如果是这种情况,那么为什么它不会为图像文件引发。
此外,如果我尝试将 manifest.json 文件中的内容安全策略设置为:“content_security_policy”:“script-src 'self'; object-src 'self'; frame-src 'self' data:”
然后错误更改为: 拒绝从'data:application / pdf;base64'加载插件数据,因为它违反了以下内容安全策略指令:“object-src'self'
所以可能需要设置 object-src,但不确定它应该是什么。
firefox-addon - CSP 使用 page-mod 的 contentScript 阻止“eval”
我试图创建一个将与 github 交互的扩展。我需要在我的代码中使用“eval”,但我一直被页面 CSP 阻止。这是我的代码的简化版本:
有人可以帮我解决问题吗?
javascript - nodeJS - 我究竟可以把内容安全策略放在哪里
我不知道在我的代码中应用以下内容安全策略 (CSP) 代码段的位置;
它应该在 HTML 中吗?
它是否最好在 JavaScript 中实现,如下面的代码片段所示?
javascript - Chrome 应用中的内容安全政策
我的 Chrome 应用程序具有以下清单:
我有一个运行的脚本文件eval
。我已阅读有关CSP和沙盒的信息,但仍然收到此错误:
拒绝将字符串评估为 JavaScript,因为 'unsafe-eval' 不是以下内容安全策略指令中允许的脚本来源:“default-src 'self' chrome-extension-resource:”。请注意,'script-src' 没有显式设置,因此 'default-src' 用作后备。
firefox-addon - CSP 和浏览器扩展
根据“浏览器附加组件和扩展豁免”部分的维基百科:
CSP 不应干扰用户安装的浏览器加载项或扩展程序的操作...
但不幸的是,它阻止了由我的插件注入的外部脚本。
我总是可以将这个注入的代码放入内容脚本中。但我想知道是否有另一种方法可以克服这个问题。
javascript - chrome 打包的应用程序不允许在 knockout.js 中使用 unsafe-eval
我开发了一个网络应用程序并将其作为解压扩展程序上传到我的 Google chrome 应用程序中。在执行期间,我收到以下错误:
拒绝将字符串评估为 JavaScript,因为 'unsafe-eval' 不是以下内容安全策略指令中允许的脚本来源:“default-src 'self' chrome-extension-resource:”。请注意,'script-src' 没有显式设置,因此 'default-src' 用作后备。[淘汰赛-3.0.0-min.js:54]
添加"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
到 manifest.json 会产生一条消息:
'content_security_policy' 仅允许用于扩展和旧版打包应用程序,但这是一个打包应用程序。
这是否意味着我不能使用 knockous.js 为 chrome 应用商店开发应用程序?
如何解决这个问题?
javascript - Knockout.js 安全绑定
我想使用带有敲除的安全绑定。为此,我使用了knockout-secure-binding.js。
谁能解释为什么下面的代码不起作用?它抛出一个错误`
未捕获的 #< 对象 > 淘汰赛-secure-binding.js:74`
行后ko.applyBindings(new viewModel());