问题标签 [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.

0 投票
2 回答
1808 浏览

sql-server - Reporting Services 2008 中的代码访问安全性

我在 Reporting Service 2008 中运行了一个 Delivery Extension。

它已经运行了很长时间。但现在我想从扩展中插入数据库。

我得到的第一个错误是:

然后我在打开连接并插入的代码之前添加了这个:

然后错误信息变成了这样:

然后我添加了以下行:

现在我得到的错误是:

我的包含实际 SqlConnection 特定代码的代码位于从 Delivery Extension 引用的程序集中。特定于权限的代码在该程序集中,但我尝试将其移动到 Delivery Extension 程序集中 - 但没有任何运气。

0 投票
4 回答
6306 浏览

javascript - 内容安全策略是否阻止书签?

默认情况下, Mozillas CSP是否会阻止从书签执行Javascript

可以这样配置吗?

0 投票
2 回答
1901 浏览

node.js - 如何从 Node.js/Express 中的请求中检索实体主体(用于 CSP 违规报告)?

我有兴趣为我的 Node.js 应用程序实施内容安全策略 (CSP)。Mozilla 的文档很有帮助,但我被困在如何启用违规报告上。我了解它们如何工作的基本前提(浏览器向指定的 URL 发送 POST 请求以通知网站违规),但无法弄清楚在哪里可以找到描述 HTTP 请求中违规的 JSON 文档。也许这对于更熟悉 HTTP 规范的人来说是显而易见的。

查看 CSP的W3C 草案,我确定 JSON 包含在 HTTP 的一部分中,称为“实体主体”。我仍然不知道该实体的目的是什么(我能找到的关于此事的唯一稍微有用的页面是来自 HTTP 规范的页面)。我假设它是请求的主体。

也许更重要的是,我找不到任何方法来检索实体主体的内容。我想过使用req.header('entity-body'),但这不起作用,因为实体不是 HTTP 标头。它是什么以及如何获取它?

(此外,我尝试查找有关如何在 Node.js 中实现 CSP 违规报告的教程,但一无所获。我确实找到了一个用于 PHP 的教程,但它并不是特别有用,引用了一个file_get_contents('php://input')我在 Node 中没有类似的东西.js/快递。)

任何帮助将不胜感激。

0 投票
1 回答
2102 浏览

javascript - 调用函数和显示图像中的内容安全策略问题

不明白我在我的站点http://pcrypt.org/dev/groups.php指定的策略的效果。

如果我不允许内联脚本,我该如何调用一个函数。在页面中,我尝试从 onload (body onload='initialize()') 调用位于服务器上的 js 文件中的函数,但它会生成此错误(对不起,丹麦语):

"options inline-script;"添加后工作正常

也喜欢initialize()在 DOM 准备好时调用,而不是等待图像加载,但是如何在 CSP 到位的情况下执行此操作?

还认为我需要"img-src *;",但根本没有显示图像。图像位于同一台服务器上?

请帮我理解。

0 投票
4 回答
92269 浏览

google-chrome - Chrome 版本 18+:如何使用内容安全策略允许内联脚本?

Chrome 18 Dev/Canary 刚刚发布,content_security_policy某些扩展将需要在清单中。

我正在尝试让 CSP 用于内联脚本,但我不知道我是否做错了什么,或者这是否是 Chrome 18 错误。

清单.json:

测试.html:

在 Chrome 18 中,这个解压后的扩展无法加载,显示错误:

无法从“[扩展目录]”加载扩展。 “content_security_policy”的值无效。

如果我更改'unsafe-inline''self',则扩展加载正常,但alert()不起作用,并且选项页面的控制台包含错误:

由于 Content-Security-Policy 拒绝执行内联脚本。

在 Chrome 16 中,使用'unsafe-inline'可以让扩展程序正常加载并且也可以正常alert()工作。但是,在 Chrome 16 中,替换'unsafe-inline''foo'让扩展加载,但当然不会让alert()工作,所以也许 Chrome 18 比 16 更严格,但是......

实际上是default-src 'unsafe-inline'无效的,还是这是一个错误?我可以使用什么 CSP 值alert()在 Chrome 18 中工作?


根据下面接受的答案,内联脚本不再适用于 Chrome 18 的扩展程序。alert()需要将其放置在其自己的 JavaScript 文件中。

0 投票
2 回答
6132 浏览

javascript - 内容安全策略错误?

我正在开发 chrome 扩展并使用内容脚本在页面上执行此代码


我收到此错误
“由于 Content-Security-Policy 而拒绝应用内联样式。”
manifest.json 代码:

0 投票
2 回答
1205 浏览

javascript - Javascript 和 CSP - 最佳实践

我想为我的 Web 应用程序使用 Content Site Protection。如果您还没有听说过,简而言之:它将允许我禁用任何嵌入到我的 Web 应用程序中的 javascript,从而有助于防止 XSS。

结果是,我所有的 javascript 代码都必须在外部文件中。

大多数javascript“库/框架”代码已经存在,但通常我的页面将包含至少几行JS代码,实例化与特定页面相关的组件。

例如,我有一个假设的注册页面。在注册页面的底部,我有以下代码:

该假设代码获取注册表单的引用,并且可以注册所有验证代码。

现在我必须将此代码移动到外部文件。我可以:

选项 A:为每个页面创建一个小的 .js 文件,该文件只执行该页面的特定代码。

  • 优点 - 简单且相对较快
  • 缺点 - 每个页面都有一个额外的 js 文件,我更希望能够将我的所有 javascript 最小化到一个文件中以减少请求。

选项 B:在 javascript 文件中执行我所有的“实例化代码”。我只会检测页面上是否有任何“.regForm”css 类,并且仅在它们出现在页面上时才实例化我的对象。

  • 优点 - 实例化的单一位置。如果页面上的组件具有正确的 css 类,它们就会神奇地开始工作。
  • 缺点 - 如果我的应用程序增长了很多,那么特定页面可能不需要大量初始化代码。

选项 C:给我的<body>标签一个 id 或类,并基于一个大开关执行正确的代码。

  • 优点:仍然可以压缩为单个 .js 文件,我不需要每页一个 .js 文件。
  • 缺点:我想我觉得这有点难看。

总而言之,选项 B 是最好的,如果不是因为我觉得拥有大量初始化代码是个坏主意的话。

我主要想知道的是,你有没有遇到过这种情况,你是怎么解决的?

0 投票
3 回答
7227 浏览

javascript - 内容安全政策阻止对 *://www.google.com/recaptcha/api 的请求

根据这个链接,它似乎是内联脚本,例如用于在页面中插入 recaptcha 对象,通过

或通过

);

尽管我的 manifest.json 显然允许像http://www.google.com/recaptcha/api/js/recaptcha_ajax.js这样的网址,但我总是对内容安全政策有所抱怨

我是否遗漏了一些非常明显的东西,使整个问题变得疯狂?

0 投票
1 回答
832 浏览

google-chrome-extension - Chrome 扩展和内容安全策略以及 GWT RPC

我有 chrome 扩展,因为我正在尝试使用 GWT RPC。不能让它工作。我在我的模块 xml 文件中使用 <add-linker name="xsiframe" /> 编译我的 GWT 代码。我仍然在 js chrome 控制台中遇到以下异常,没有任何行号:

由于 Content-Security-Policy 拒绝执行 JavaScript URL。

我的 manifest.json,ver.2 是这样的:


此部署是否有已知的解决方案?或者什么可能是错的?谢谢

0 投票
1 回答
37343 浏览

javascript - CSP:如何允许给定 URI 前缀的不安全评估 (Firefox)

我正在尝试使用MathJax作为我们使用非常严格的内容安全策略 (CSP)的 Web 应用程序的一部分。问题是 MathJax 被编码为使用eval()[确切地说,以Function()] 的形式,默认情况下 CSP 认为它不安全。

我目前正在使用以下 CSP 标头:

这会导致 MathJax 2.0 代码失败,因为它使用Function(). 我试图只允许Function()位于 path 下同一原点内的 MathJax 的 unsafe-eval (即)/:static/math/。为此,我尝试添加

使完整的标题看起来像

但我仍然无法 Firefox 13.0 运行代码。我收到一条发给 Firefox Web 控制台(位于工具 - Web 开发人员)的错误消息:

但是,我没有收到“report-uri”的 CSP 报告。(如您所见,我目前正在通过没有 SSL 的自定义 localhost 端口运行测试,以防万一。前面的冒号static不是错字,我保留所有以冒号开头的路径部分供内部使用应用程序,所有用户内容都可以自由定义其他 URL。)

我对unsafe-eval属性的使用是不正确的,还是不可能只对“自我”的子集允许不安全评估?目的是只允许 unsafe-eval 用于相同的源路径前缀/:static/math,严格的 CSP JS 代码执行 ' self' 并且不允许任何其他方法的 JS 代码。