假设有人(坏人)使用 setInterval
设定了一个定时器,但是我们不知道它的ID(我们没有对该定时器返回的对象引用,也不知道其值)
(function(){
setInterval(function(){console.log('pwned')},
10000)
})();
有没有什么方法可以清除它?是否有可能以其他方式访问计时器?或者至少在特定的浏览器/ JavaScript 引擎中?David Flanagan 在他的大型 JSTDG 中也涉及了类似的主题。其中,
setInterval()
方法在恶意代码中的使用是索引点之一。“…一些浏览器检测到重复的对话框和长时间运行的脚本,并给用户选项停止它们。但是,恶意代码可以使用 setInterval() 这样的方法来加载 CPU,并通过分配大量内存攻击您的系统。Web 浏览器没有一般性的方法可以防止这种粗鲁的攻击。在实践中,这不是 Web 上的常见问题,因为没有人会返回到从事这种脚本滥用的站点!”