假设某人(邪恶)为我们设置了一个带有 的计时器setInterval
,但我们不知道它的 ID(我们没有对该对象的引用,setInterval 正在返回,也没有它的值)
(function(){
setInterval(function(){console.log('pwned')},
10000)
})();
有没有办法,如何清除?是否可以通过其他方式访问计时器?或者至少特别是浏览器/javascript引擎?
David Flanagan 在他的大 JSTDG 中也谈到了类似的话题。
setInterval() method, use in malicious code
索引中的键指向
... 一些浏览器会检测到重复的对话框和长时间运行的脚本,并为用户提供停止它们的选项。但是恶意代码可以使用诸如 setInterval() 之类的方法来加载 CPU,并且还可以通过分配大量内存来攻击您的系统。Web 浏览器没有通用的方法可以防止这种笨拙的攻击。实际上,这在 Web 上并不是一个常见的问题,因为没有人会返回从事这种脚本滥用的站点!