Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erläuterung der DoS-Angriffsanalyse und Abwehr von 12 Zeilen JS-Code

黄舟
Freigeben: 2017-03-08 14:56:14
Original
1460 Leute haben es durchsucht

Es gibt einen 12-zeiligen JavaScript-Code, der Firefox-, Chrome- und Safari-Browser zum Absturz bringen und auch zum Neustart des iPhone und zum Absturz von Android führen kann. Der Autor dieses Artikels hat diese 12 analysiert und interpretiert Wir stellen auch entsprechende Verteidigungsmethoden vor, und jeder ist herzlich eingeladen, diese gemeinsam zu diskutieren. Hier ist ein Artikel über diese 12 Zeilen JS-Code: Wie bringen diese 12 Zeilen Code den Browser zum Explodieren?

Ajax und pjax

Ajax ist „Asynchronous Javascript And XML“ (Asynchronous JavaScript and XML), eine Technologie zur Erstellung schneller dynamischer Webseiten. Ajax ermöglicht die asynchrone Aktualisierung von Webseiten, indem im Hintergrund eine kleine Datenmenge mit dem Server ausgetauscht wird. Das bedeutet, dass Teile einer Webseite aktualisiert werden können, ohne dass die gesamte Webseite neu geladen werden muss.

Ajax-Anwendungen können jedoch auch andere Probleme verursachen, die leicht dazu führen können, dass der Browser nicht in der Lage ist, sich vorwärts und rückwärts zu bewegen. Dies ist ein sehr problematisches Problem, und Entwickler müssen ihre Arbeitsbelastung erhöhen (z. B. durch eine versteckte Funktion). iframe oder Ändern des Standort-Hash-Werts und andere Methoden), um das Problem zu lösen.

Um die durch traditionelles Ajax verursachten Probleme zu lösen, wurde in HTML5 eine neue API eingeführt: History.pushState. Nach der Kombination mit Ajax hat sie einen neuen Namen namens pjax. Es handelt sich um eine neue Technologie, die auf Ajax+history.pushState basiert. Diese Technologie kann den Inhalt der Seite ohne Aktualisierung ändern und die URL der Seite ändern. pjax ist eine Kapselung von Ajax+pushState und unterstützt mehrere Funktionen wie lokale Speicherung und Animation. Unterstützt derzeit jquery, qwrap, kissy und andere Versionen.

HTML5.history.pushState

HTML5 kann den Browserverlauf verwalten und die URL der aktuellen Seite über die Schnittstellen pushState und replaceState ändern.

pushState fügt die angegebene URL zum Browserverlauf hinzu und speichert den aktuellen Verlaufspunkt. replaceState ersetzt die aktuelle URL durch die angegebene URL. Gleichzeitig funktionieren diese Methoden mit dem window.onpostate-Ereignis.

history.pushState(data, title, url): Wenn das onpopstate-Ereignis ausgelöst wird, wird ein Datensatz oben im Verlaufsstapel hinzugefügt Wird im Allgemeinen von allen aktuellen Browsern ignoriert. Dieser Parameter ist die Seitenadresse, optional, und der Standardwert ist die aktuelle Seitenadresse. Spezifische Details:

Status: Das Objekt ist ein JavaScript-Statusobjekt, ein zusätzliches Objekt, das historische Punkte aufzeichnet, und kann leer sein. Es hängt mit der neuen Verlaufsentität zusammen, die von der Methode pushState() erstellt wurde. Wird zum Speichern von Informationen über den Eintrag verwendet, den Sie in den Verlauf einfügen möchten.

Titel: Alle Browser ignorieren diesen Parameter im Allgemeinen, obwohl er möglicherweise in Zukunft verwendet wird. Der sicherste Weg, es jetzt zu verwenden, besteht darin, eine leere Zeichenfolge zu übergeben, um zukünftige Änderungen zu verhindern, oder Sie können einen kurzen Titel übergeben, um den Status darzustellen.

URL: Dieser Parameter wird verwendet, um die URL der neuen Verlaufsentität zu übergeben. Die neue URL muss sich in derselben Domäne wie die vorhandene URL befinden, andernfalls löst pushState() eine Ausnahme aus. Dieser Parameter ist optional, wenn er leer bleibt, wird er auf die aktuelle URL des Dokuments gesetzt.

Zwölf Zeilen Codeanalyse

Das Bild oben zeigt die zwölf Zeilen Code. Der entscheidende Punkt ist die Schleife für die gesamte URL: History.pushState(0,0,total); Die URL, eine 1.000.000-malige Schleife und das ständige Hinzufügen neuer Datensätze zum Verlaufsstapel führt zu einer übermäßigen CPU- und Speicherauslastung, stürzt die Browser Firefox, Chrome und Safari ab und verursacht auch einen Neustart des iPhones.

Analyseergebnisse

Persönliche Messung in einer virtuellen XP-Maschine (i7 Single Core 3,4 G, 512 Speicher):

  • Wenn die Anzahl der Schleifen oben ist 10 Wenn der Wert über 10.000 liegt, erreicht die CPU- und Speicherauslastung sofort 100 % und stürzt dann ab und friert ein Die CPU- und Speicherauslastung wird innerhalb von 20 Sekunden schrittweise auf 100 % erhöht und stürzt dann ab.

  • Als die Anzahl der oben genannten Zyklen auf etwa 500 reduziert wurde, stieg die CPU-Auslastung allmählich an 100 % und dann wieder ein stabiler Zustand, und die Speichernutzung stieg von etwa 130 MB auf etwa 230 MB. Nach dem Öffnen der Seite 192.168.56.106/12.html änderte sich auch der Link in der Adressleiste zu: 192.168. 56.106/0123456789101112131415161718192021...49449549649749 8499

  • Es ist ersichtlich, dass beim Hinzufügen von Datensätzen zum Verlaufsstapel durch die Schleife die Seite an der neuen Sprungadresse aktualisiert wird ist eine „Pseudoadresse“, die sich in der Schleife ansammelt. Wenn diese Länge den Grenzwert überschreitet, hängt die Wirkung und Effizienz des Angriffs vollständig von der Anzahl der Schleifen und der Hardwarekonfiguration des Ziels ab.

  • Verwandte Abwehrmaßnahmen

Ich glaube, das Sicherheitsbewusstsein aller ist bereits sehr stark, aber Sie müssen trotzdem Alarm schlagen und keinen Links, Anhängen oder E-Mails vertrauen, die Ihnen von Fremden gesendet werden in irgendeiner Weise, Bilder und andere Informationen, natürlich schließt es die Streiche von guten und schlechten Freunden nicht aus, also Freunde, denkt daran, oft Strg+S zu drücken, sonst werdet ihr sehr deprimiert sein, wenn euer Computer abstürzt.

Das Internet war seit seiner Geburt Hackerangriffen ausgesetzt. Frühe Hackerangriffe dienten mehr oder weniger dem Zweck technischer Experimente und der Angeberei Anzahl der Nutzer. Mit der rasanten Zunahme der Zahl hat sich auch die Häufigkeit von Hackerangriffen entsprechend weiterentwickelt, und es ist nach und nach eine schwarze Industriekette zum Zweck der illegalen Erlangung wirtschaftlicher Vorteile entstanden. Das technische Niveau des Internet-Sicherheitsschutzes schreitet sprunghaft voran. Angriffe und Verteidigung finden im Internet-Zeitalter jede Minute und Sekunde statt.

Natürlich ist der Schutz der Netzwerksicherheit von Technologie und Bewusstsein abhängig. Es reicht nicht aus, sich ausschließlich auf die Produkte und Dienstleistungen von Netzwerksicherheitsherstellern zu verlassen Sicherheit Der Bewusstseinszuwachs ist nicht zu übersehen.

Zum Beispiel: Achten Sie auf die Verwaltung persönlicher Passwörter, achten Sie auf den Schutz der Privatsphäre, greifen Sie nicht so leicht auf öffentliches WLAN zu, vertrauen Sie nicht so leicht Links oder Dateien von unbekannten/vertrauten Freunden usw., Achten Sie auf die Sicherheit beim mobilen Bezahlen und verhindern Sie, dass Ihr Gerät „Streifen“ usw. aufweist.


Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der DoS-Angriffsanalyse und Abwehr von 12 Zeilen JS-Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage