Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée de l'analyse des attaques DoS et de la défense de 12 lignes de code JS

黄舟
Libérer: 2017-03-08 14:56:14
original
1466 Les gens l'ont consulté

Il existe un code JavaScript de 12 lignes qui peut faire planter les navigateurs Firefox, Chrome et Safari, et peut également provoquer le redémarrage de l'iPhone et le crash d'Android. L'auteur de cet article a analysé et interprété ces 12. lignes de code. Nous proposons également des méthodes de défense correspondantes, et tout le monde est invité à en discuter ensemble. Voici un article sur ces 12 lignes de code js : Comment ces 12 lignes de code font-elles exploser le navigateur ?

Ajax et pjax

Ajax est "Asynchronous Javascript And XML" (Asynchronous JavaScript and XML), qui est une technologie utilisée pour créer des pages Web dynamiques rapides. Ajax permet aux pages Web d'être mises à jour de manière asynchrone en échangeant une petite quantité de données avec le serveur en arrière-plan. Cela signifie que certaines parties d'une page Web peuvent être mises à jour sans recharger la page Web entière.

Cependant, les applications Ajax peuvent également provoquer d'autres problèmes, qui peuvent facilement empêcher le navigateur d'avancer et de reculer. Il s'agit d'un problème très gênant, et les développeurs doivent augmenter leur charge de travail (par exemple via un message caché). iframe, ou en modifiant la valeur de l'emplacement .hash et d'autres méthodes) pour le résoudre.

Afin de résoudre les problèmes causés par l'Ajax traditionnel, une nouvelle API a été introduite dans HTML5 : history.pushState. Après avoir été combinée avec Ajax, elle porte un nouveau nom appelé pjax. Il s'agit d'une nouvelle technologie basée sur Ajax history.pushState. Cette technologie permet de modifier le contenu de la page sans actualisation, et peut modifier l'URL de la page. pjax est une encapsulation d'Ajax pushState et prend en charge plusieurs fonctions telles que le stockage local et l'animation. Prend actuellement en charge jquery, qwrap, kissy et d'autres versions.

HTML5.history.pushState

HTML5 peut exploiter l'historique du navigateur et modifier l'URL de la page actuelle via les interfaces pushState et replaceState.

pushState ajoute l'URL spécifiée à l'historique du navigateur et stocke le point d'historique actuel. replaceState remplace l'URL actuelle par l'URL spécifiée. En même temps, ces méthodes fonctionneront avec l'événement window.onpostate.

history.pushState(data, title, url) : ajoutez un enregistrement en haut de la pile d'historique ; les données seront transmises en tant que paramètre lorsque l'événement onpopstate est déclenché. Le titre est le titre de la page ; généralement ignoré par tous les navigateurs actuels. Ce paramètre URL est l'adresse de la page, facultatif, et la valeur par défaut est l'adresse de la page actuelle. Détails spécifiques :

state : L'objet est un objet d'état JavaScript, un objet supplémentaire qui enregistre des points historiques, et peut être vide. Il est lié à la nouvelle entité historique créée par la méthode pushState(). Utilisé pour stocker des informations sur l'entrée que vous souhaitez insérer dans l'historique.

titre : Tous les navigateurs ignorent généralement ce paramètre, bien qu'il puisse être utilisé dans le futur. Le moyen le plus sûr de l'utiliser maintenant est de transmettre une chaîne vide pour empêcher de futures modifications, ou vous pouvez transmettre un titre court pour représenter l'état.

URL : ce paramètre est utilisé pour transmettre l'URL de la nouvelle entité d'historique. La nouvelle URL doit être dans le même domaine que l'URL existante, sinon pushState() lèvera une exception. Ce paramètre est facultatif. S'il est laissé vide, il sera défini sur l'URL actuelle du document.

Douze lignes d'analyse de code

L'image ci-dessus représente les douze lignes de code. Le point clé est la boucle pour l'URL totale : history.pushState(0,0,total); l'URL, la boucler 1 000 000 de fois et ajouter constamment de nouveaux enregistrements à la pile d'historique entraînera une utilisation excessive du processeur et de la mémoire, fera planter les navigateurs Firefox, Chrome et Safari, et entraînera également le redémarrage de l'iPhone.

Résultats de l'analyse

Mesure personnelle dans la machine virtuelle XP (i7 single core 3.4G, 512 mémoire) :

  • Lorsque le nombre de boucles ci-dessus est dix Lorsque le niveau est supérieur à 10 000, l'utilisation du processeur et de la mémoire atteint instantanément 100 %, puis plante et se fige

  • Lorsque le nombre de cycles ci-dessus est réduit à environ 10 000, le L'utilisation du processeur et de la mémoire sera progressivement augmentée jusqu'à 100 % en 20 secondes, puis plantera

  • Lorsque le nombre de cycles ci-dessus a été réduit à environ 500, l'utilisation du processeur a progressivement augmenté jusqu'à 100 %, puis à nouveau. Il est instantanément revenu à un état stable et l'utilisation de la mémoire est passée d'environ 130 M à environ 230 M. Après avoir ouvert la page 192.168.56.106/12.html, le lien dans la barre d'adresse est également devenu : 192.168. 56.106/0123456789101112131415161718192021...49449549649749 8499

On peut voir qu'en ajoutant continuellement des enregistrements à la pile d'historique via la boucle, la page sera actualisée à la nouvelle adresse de saut, qui est une "pseudo-adresse" accumulée dans la boucle. Lorsque cette longueur dépasse la limite, cela provoquera un DOS. L'effet et l'efficacité de l'attaque dépendent entièrement du nombre de boucles et de la configuration matérielle de la cible.

Défenses pertinentes

Je pense que la sensibilisation de chacun à la sécurité est déjà très forte, mais vous devez quand même tirer la sonnette d'alarme. Ne faites confiance aux liens, pièces jointes ou e-mails qui vous sont envoyés par un étranger. de quelque manière que ce soit. , images et autres informations, bien sûr, cela n'exclut pas les farces de bons et de mauvais amis, alors amis, n'oubliez pas de Ctrl S fréquemment, sinon vous serez très déprimé si votre ordinateur tombe en panne.

Internet a été exposé à des attaques de pirates informatiques depuis sa création. Les premières attaques de pirates informatiques avaient plus ou moins pour objectif l'expérimentation technique et la démonstration. Cependant, avec la croissance de l'infrastructure Internet mondiale, la croissance illimitée des connexions et la croissance illimitée des connexions. nombre d'utilisateurs, Avec l'augmentation rapide du nombre, la fréquence des attaques de pirates a également augmenté en conséquence. La technologie des pirates a également continué à se développer et une chaîne industrielle noire visant à obtenir illégalement des avantages économiques a progressivement émergé. Le niveau technique de protection de la sécurité Internet progresse à pas de géant. Les attaques et les défenses se produisent chaque minute et chaque seconde à l'ère d'Internet.

Bien sûr, Internet regorge de menaces pour la sécurité des informations. La protection de la sécurité des réseaux dépend de la technologie et de la sensibilisation. Pour se protéger contre ces problèmes, il ne suffit pas de s'appuyer uniquement sur les produits et services des fabricants de sécurité réseau. sécurité La prise de conscience ne peut être ignorée.

Par exemple : faites attention à la gestion des mots de passe personnels, faites attention à la protection de la vie privée, n'accédez pas facilement au wifi public, ne faites pas facilement confiance aux liens ou aux fichiers d'amis inconnus/familiers, etc., faites attention à la sécurité des paiements mobiles et ne laissez pas votre appareil « streaking », etc.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal