为什么内联 JS 块不安全

Why are inline JS blocks unsafe?

本文关键字:不安全 JS 为什么      更新时间:2023-09-26

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

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

没有放宽执行限制的机制 内联 JavaScript。特别是,设置脚本策略 包括不安全的内联将不起作用。这是故意的。

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

谢谢。

正如页面所说:

第一个限制清除了一大类跨站点脚本 通过使您无法意外执行脚本进行攻击 由恶意第三方提供。

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

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

例如,如果您有用户可以填写的表单。用户可以输入一个包含一些JS的脚本标记。假设它就像一个讨论论坛。我进去做一个主题,但它里面有一些隐藏的JS。我们还假设您在发布之前没有将其清理干净。现在我的帖子有JS,每次有人查看它时都会执行。这会阻止执行该脚本。