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