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 : <script>alert('test');</script>, 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 : < sera échappé vers <> ou échappé vers > comme "<script>alert('test');</script>" ce caractère sera échappé vers : "<script> alert ("test');</script>" Lorsqu'elle est affichée à nouveau, la page analysera < en <, > en >, restaurant ainsi la véritable entrée de l'utilisateur. Ce qui est finalement affiché sur la page est toujours "< ;script>alert('test');", 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!