多线程javascript的安全性含义

时间:2020-03-05 18:46:35  来源:igfitidea点击:

通过阅读有关多线程javascript的问题,我想知道允许javascript生成多个线程是否会对安全性产生任何影响。例如,是否有可能存在恶意脚本在线程之间反复生成线程的企图,以使操作系统或者解释器不堪重负,并触发进入"未定义行为域"的进入,还是几乎没有问题?攻击可能利用其他任何方式利用假设的javascript实现来支持非线程实现不受干扰的线程吗?

更新:请注意,锁定浏览器与创建未定义的行为利用不同。

解决方案

回答

好吧,我认为多线程javascript的唯一主要示例是Google chrome(可以将其发布给JEEZ),如果我理解的话,javascript将每个选项卡仅处理一个进程,因此除非它开始生成选项卡(弹出窗口),否则我认为这将是一个空问题,但我认为Google无论如何都会在沙箱中运行所有JavaScript。

回答

同样,我们需要区分以下两种情况:1)语言中的多线程支持(我认为不会认真讨论将要发生的事情)和2)浏览器中JavaScript引擎/解释器中多线程的使用。

对于#2,除非实现存在缺陷,否则我看不到它如何真正为引擎/解释器增加任何可能的安全隐患。

回答

好了,我们已经可以锁定浏览器,并严重地降低了使用性能欠佳的JS的系统的速度。开明的浏览器已经对这种情况进行了检查,并将在它失控之前将其停止。

我倾向于假定将以类似的方式处理线程。

也许我们可以解释"未定义行为"的含义?一个允许不受信任的脚本直接控制正在运行的OS本地线程数的解释器非常幼稚,因为我不知道Gears是如何运行的,但是由于API集中在WorkerPools中的Workers周围,如果他们没有将使用中的本机线程总数限制在非常低的数量,那将感到非常惊讶。

回答

不,在理想的实现中,多个线程不会增加额外的安全性问题。线程化javascript会增加javascript解释器的复杂性,从而使其更有可能出现可利用的bug。但是仅线程不会增加任何安全性问题。

javascript中没有线程,因为" Threads Suck"可从语言设计器中阅读更多信息(http://weblogs.mozillazine.org/roadmap/archives/2007/02/threads_suck.html)