Maison > Article > interface Web > Une brève discussion sur l'échappement HTML et les méthodes pour empêcher les attaques par injection Javascript
L'éditeur suivant vous proposera une brève discussion sur l'échappement HTML et les méthodes pour empêcher les attaques par injection JavaScript. L'éditeur pense que c'est plutôt bien, alors je vais le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur et jetons un coup d'œil.
Parfois, il y aura une zone de saisie sur la page une fois que l'utilisateur a saisi le contenu, il sera affiché sur la page, semblable à une application de chat Web. Si l'utilisateur saisit un script js, le rapport est : 3f1c4e4b6b16bbbd69b2ee476dc4f83aalert('test');2cacc6d41bbb37262a98f745aa00fbf0, une boîte de dialogue apparaîtra sur la page, ou si le script d'entrée contient du code qui modifie le js variables de la page, le programme sera interrompu Exception ou pour atteindre l'objectif de sauter certaines vérifications. Alors, comment empêcher ce type d’attaque de script js malveillant ? Ce problème peut être résolu par l'échappement HTML.
1 : Qu'est-ce que le HTML qui s'échappe ?
L'échappement HTML consiste à convertir des caractères spéciaux ou des balises HTML en leurs caractères correspondants. Par exemple : cd84303b648c62f30a7f4261ed78bbcd ou échappé vers > comme "3f1c4e4b6b16bbbd69b2ee476dc4f83aalert('test');2cacc6d41bbb37262a98f745aa00fbf0" ce caractère sera échappé vers : "3f1c4e4b6b16bbbd69b2ee476dc4f83a alert ("test');2cacc6d41bbb37262a98f745aa00fbf0" Lorsqu'elle est affichée à nouveau, la page analysera aa4b515f44b991b3a823f5176e943653 en >, restaurant ainsi la véritable entrée de l'utilisateur. Ce qui est finalement affiché sur la page est toujours "< ;script>alert('test');2cacc6d41bbb37262a98f745aa00fbf0", qui évite les attaques par injection js et affiche véritablement les entrées de l'utilisateur.
2 : Comment s'évader ?
1. Via js
//转义 元素的innerHTML内容即为转义后的字符 function htmlEncode ( str ) { var ele = document.createElement('span'); ele.appendChild( document.createTextNode( str ) ); return ele.innerHTML; } //解析 function htmlDecode ( str ) { var ele = document.createElement('span'); ele.innerHTML = str; return ele.textContent; }
2. met en œuvre
function htmlEncodeJQ ( str ) { return $('<span/>').text( str ).html(); } function htmlDecodeJQ ( str ) { return $('<span/>').html( str ).text(); }
3. Utilisez
var msg=htmlEncodeJQ('<script>alert('test');</script>'); $('body').append(msg);
Il est recommandé d'utiliser jquery pour une meilleure compatibilité.
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!