5

我正在阅读 Chrome 扩展文档“内容安全策略 (CSP) ”。它说:

内联 JavaScript 以及危险的字符串到 JavaScript 方法(如 eval)将不会被执行。此限制禁止内联块和内联事件处理程序(例如<button onclick="...">)。

...

没有机制可以放宽对执行内联 JavaScript 的限制。特别是,设置包含 unsafe-inline 的脚本策略将不起作用。这是故意的。

为什么内联<script>块不安全?谁能解释一下?如果能举出例子就更好了。

谢谢你。

4

1 回答 1

8

正如页面所说:

第一个限制消除了一大类跨站点脚本攻击,使您不可能意外执行恶意第三方提供的脚本。

基本上,您加载的任何脚本都需要位于扩展本地可访问的单独文件中。这可以防止您加载被注入您的页面或包含它们的第 3 方脚本,例如:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

例如,如果您有一个用户可以填写的表格。用户可以输入带有一些 JS 的脚本标签。假设它就像一个讨论论坛。我进去做了一个话题,但里面有一些隐藏的 JS。我们还假设您在发布之前没有清除它。现在我的帖子有 JS,每次有人查看它时都会执行。这可以防止该脚本被执行。

于 2012-08-11T16:04:30.607 回答