我理解术语沙箱。但我在JS中有限的技能无法帮助我理解JS中的沙箱是什么。那么,沙箱到底是什么呢?除了安全性之外,为什么我们需要沙箱JS?
发布于 2011-08-13 01:22:29
javascript沙箱完全按照您所说的做。它限制了脚本可以做的范围。在虚拟化脚本可以调用的资源方面也有好处。这允许沙箱主机编组这些资源以获得更好的性能,并阻止无休止的循环脚本导致整个浏览器崩溃。
发布于 2011-08-13 01:29:17
沙箱是创建一个作用域的行为,在这个作用域中,应用程序的任何其他部分都不能操作(除非有机会这样做)。更具体地说,这通常是一个函数作用域,它公开了其中实际发生的事情的有限子集。
建立在沙盒思想基础上的一个库是YUI3。应用程序的基本单元是YUI实例沙箱:
var Y = YUI(); // creates a configurable YUI instance
// Creates a sandbox for one part of your application,
// including the 'node' module.
Y.use('node', function(Z) {
// Z is a YUI instance that's specific to this sandbox.
// Operations inside it are protected from outside code
// unless exposed explicitly. Any modules you request in
// use statement will be separately instanced just for
// this sandbox (in this case, the 'node' module)
//
// That way, if another part of your application decides
// to delete Z.Node (or worse, replace it with a
// malicious proxy of Z.Node) the code you've written
// here won't be affected.
});沙箱的优点主要是降低应用程序的复杂性:因为沙箱是不可变的,所以更容易推理和验证。它们还提高了运行时安全性,因为设计良好的沙箱应该能够作为页面上运行的其他脚本的黑盒。它不能防止所有可能的攻击,但它可以防止许多简单的攻击。
发布于 2011-08-13 01:34:29
沙箱为脚本创建了一个有限的使用范围。假设你正在为一个网站编写代码,当你不确定他们是否会像你期望的那样工作时,避免对一个实时网站进行编辑,这是值得的--没有测试是不可能真正确定的。即使它工作正常,如果你有机会对JS进行一系列的修改,直到你按你喜欢的方式调整它,你很容易在你更新它的同时扰乱任何试图使用该网站的人。
由于沙箱的有限性质,当您打破东西时,也更容易分辨出哪些东西被打破了。
https://stackoverflow.com/questions/7043882
复制相似问题