Скажем, кто-то (зло) установил нам таймер с setInterval
, но мы не знаем его ID (у нас нет ни ссылки на объект, который возвращает setInterval, ни его значения)
(function(){
setInterval(function(){console.log('pwned')},
10000)
})();
Есть ли способ, как его очистить? Можно ли получить доступ к таймеру каким-то другим способом? Или, по крайней мере, в конкретном браузере/движке javascript?
Дэвид Флэнаган затрагивает аналогичную тему в своем большом JSTDG. Ключ setInterval() method, use in malicious code
в указателе указывает на
... Некоторые браузеры обнаруживают повторяющиеся диалоговые окна и длительные сценарии и дают пользователю возможность остановить их. Но вредоносный код может использовать такие методы, как setInterval(), для загрузки ЦП, а также может атаковать вашу систему, выделяя много памяти. Не существует общего способа, с помощью которого веб-браузеры могли бы предотвратить такого рода неуклюжие атаки. На практике это не является распространенной проблемой в Интернете, поскольку никто не возвращается на сайт, который занимается подобным злоупотреблением сценариями!