通读 这个问题 关于多线程 javascript,我想知道允许 javascript 生成多线程是否会产生任何安全隐患。例如,是否存在恶意脚本重复生成一个又一个线程以试图压倒操作系统或解释器并触发进入“未定义行为区域”的风险,或者这几乎不是问题?攻击可能利用假设的 javascript 实现(支持非线程实现可以免疫的线程)的其他方式吗?

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

有帮助吗?

解决方案

不,多线程不会在完美的实现中增加额外的安全问题。线程化 javascript 会增加 javascript 解释器的复杂性,从而使其更有可能出现可利用的错误。但线程本身不会增加任何安全问题。

javascript 中不存在线程,因为“线程很糟糕”——请阅读语言设计者的更多内容(http://weblogs.mozillazine.org/roadmap/archives/2007/02/threads_suck.html)

其他提示

好吧,你已经可以锁定浏览器并 严重地 使用行为不良的 JS 会减慢系统速度。开明的浏览器已经对此类事情进行了检查,并会在事情失控之前阻止它。

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


也许您可以解释一下“未定义行为”的含义?允许不受信任的脚本执行的解释器 直接地 控制正在运行的操作系统本机线程的数量是 难以置信 天真 - 我不知道 Gears 是如何运行的,但由于 API 是围绕 Worker进入 WorkerPools,如果他们不将使用的本机线程总数限制为非常低的数量,我会感到非常惊讶。

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

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

对于#2,我看不出这如何真正给引擎/解释器添加任何可能的安全问题,除非实现中存在缺陷。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top