是啥让不安全的脚本“不安全”?
Posted
技术标签:
【中文标题】是啥让不安全的脚本“不安全”?【英文标题】:What makes an unsafe script "unsafe"?是什么让不安全的脚本“不安全”? 【发布时间】:2015-09-20 05:40:45 【问题描述】:我是 chrome 扩展的新手。我正在编写一个小插件,当用户按下按钮时会放大页面(非常新)。但是,除非我允许不安全的脚本,否则它不会运行,并且它不会延续到新页面,表面上是因为不安全的脚本。我所做的只是缩放。
我真正想知道的是,如果不是询问信息或直接访问他们的计算机,是什么让脚本不安全?
【问题讨论】:
告诉我们你做了什么。不查看代码,我们无法知道出了什么问题。 我正在研究!不知道能不能发帖。这就是为什么我问了一个一般性的描述性问题,希望得到一个一般性的描述性答案:) 好的,所以我会尝试做一个一般性的答案:-) 【参考方案1】:导致脚本对 Google 扩展程序不安全的三件事:
内嵌 javascript
这是一个常见的初学者错误(我已经做到了)。您不能放置内联 JavaScript 语句。例如,你不能这样处理事件:
<img src="myImage.jpg" onclick="doSomething()">
执行此操作的正确方法是为您的 DOM 元素(我的示例中的图像)定义一个 Id,并在单独的 JavaScript 文件中设置事件处理程序:
page.html:
<img src="myImage.jpg" id="myImage">
<script src="script.js"></script>
script.js:
//In vanilla Javascript :
document.getElementById("myImage").onClick(doSomething);
//In JQuery
$("#myImage").on("click", doSomething);
评估及相关函数
所有可以在运行中将 String 评估为 JavaScript 的函数都是不安全的。
所以eval
函数是不允许的,比如new Function("return something.value");
远程脚本
只有本地脚本是安全的。如果您使用例如 jQuery,则必须在扩展中包含该库。通过 CDN 链接加载外部库被认为是不安全的。
这是一个快速概述,您可以阅读更多相关信息并了解有关 Google Chrome 扩展程序Content Security Policy的此限制的说明
【讨论】:
【参考方案2】:要考虑的另一件事是您如何采购文件。
例如,如果您使用http://
获取文件,但使用https://
访问该站点,则会收到不安全脚本错误。
【讨论】:
以上是关于是啥让不安全的脚本“不安全”?的主要内容,如果未能解决你的问题,请参考以下文章