Powiedzmy, że ktoś (zło) wyznaczyła nam czasomierz z setInterval
, ale nie znamy jego tożsamości (nie mamy odwołanie do obiektu, który setInterval wraca, ani jej wartość)Jak usunąć interwał z nieznanym identyfikatorem?
(function(){
setInterval(function(){console.log('pwned')},
10000)
})();
Czy istnieje sposób, aby to wyczyścić? Czy można uzyskać dostęp do timera w inny sposób? A przynajmniej w szczególności silnik przeglądarki/javascript?
David Flanagan dotyka podobnego tematu jego wielki JSTDG. setInterval() method, use in malicious code
klucz w punktach indeksowych do
... Niektóre przeglądarki wykryć powtarzane okien dialogowych i skrypty długo działa i daje możliwość ich zatrzymać użytkownikowi . Ale złośliwy kod może używać metod takich jak setInterval() do ładowania procesora i może również atakować twój system przez przydzielanie dużej ilości pamięci. Nie ma żadnego ogólnego sposobu, w jaki przeglądarki internetowe mogą zapobiec tego typu atakom hamowanym. W praktyce nie jest to powszechny problem w sieci, ponieważ nikt nie wraca do witryny, która angażuje się w tego rodzaju nadużycia skryptów!
Powiązane - http://stackoverflow.com/questions/3141064/how-to-stop-all-timeouts-and-intervals-using-javascript –
Hmm .. inny pomysł - robi przez przypadek, że nadają funkcję Nazwa? –
Shadow Wizard, w tym przypadku był niestety ustawiony w zamknięciu (co jest czasem uważane za fajną funkcję do celów bezpieczeństwa). Wiem, to pytanie jest nieco teoretyczne, ponieważ prawdopodobnie w większości przypadków możemy znaleźć i edytuj niepoprawny kod lokalnie w niektórych przeglądarkach – mykhal