Maison  >  Article  >  interface Web  >  Une brève discussion sur l'échappement HTML et les méthodes pour empêcher les attaques par injection Javascript

Une brève discussion sur l'échappement HTML et les méthodes pour empêcher les attaques par injection Javascript

不言
不言original
2018-06-05 14:32:312273parcourir

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(&#39;span&#39;);
 ele.appendChild( document.createTextNode( str ) );
 return ele.innerHTML;
}

//解析 
function htmlDecode ( str ) {
 var ele = document.createElement(&#39;span&#39;);
 ele.innerHTML = str;
 return ele.textContent;
}

2. met en œuvre

function htmlEncodeJQ ( str ) {
  return $(&#39;<span/>&#39;).text( str ).html();
}

function htmlDecodeJQ ( str ) {
  return $(&#39;<span/>&#39;).html( str ).text();
}

3. Utilisez

var msg=htmlEncodeJQ(&#39;<script>alert(&#39;test&#39;);</script>&#39;);

$(&#39;body&#39;).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!

Déclaration:
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