Maison > Article > interface Web > qu'est-ce que l'injection HTML
L'injection HTML est une vulnérabilité, un type d'attaque réseau qui se produit lorsqu'une page Web ne parvient pas à nettoyer les entrées fournies par l'utilisateur ou à valider la sortie, permettant à un attaquant de forger sa propre charge utile et de la transmettre via un champ vulnérable. Du code HTML malveillant est injecté dans l'application pour modifier le contenu de la page Web et même obtenir certaines données sensibles.
L'environnement d'exploitation de ce tutoriel : système Windows 7, version HTML5, ordinateur Dell G3.
Injection HTML (Hypertext Markup Language Injection) Le chinois signifie « Hypertext Markup Language Injection ». Comme nous le savons tous, HTML contient diverses balises si l'application Web ne traite pas minutieusement les données saisies par l'utilisateur. , Si tel est le cas, certaines données soumises par des utilisateurs illégaux peuvent contenir d'autres balises HTML, et ces données sont affichées par le serveur comme des balises HTML normales, le résultat final est que les balises illégales sont analysées (peut être appliquée au phishing, ingénierie sociale, etc.), provoquant un grand impact sur les autres utilisateurs.
Un attaquant peut forger sa propre charge utile et injecter du code HTML malveillant dans l'application via des champs vulnérables, modifiant ainsi le contenu de la page Web et même obtenant certaines données sensibles.
La traduction chinoise de XSS (Cross-site Scripting) est « attaque de script intersite » XSS est essentiellement un code HTML. attaque par injection, mais Différent de l'injection HTML, XSS utilise des balises de script pour exécuter JavaScript et d'autres programmes de script, et peut obtenir des données confidentielles et une série d'opérations dangereuses via JavaScript, tandis que l'injection HTML utilise uniquement des balises HTML pour modifier le contenu de la page.
Injection HTML réfléchie (méthode GET)
Prénom à remplirhtml, remplissez le test comme nom de famille et constatez que les lettres html deviennent rouges, indiquant que le code html que nous avons écrit a été exécuté avec succès et qu'il y a une injection html sur ce site Web.
Injection HTML réfléchie (méthode POST)
Remarque : après avoir soumis les données via GET, la barre d'adresse du navigateur affichera les données soumises, mais POST ne les affichera pas.
Identique à la méthode GET ci-dessus
Remplissez le prénom
html2
, remplissez le nom de famille dans le test et constatez que les lettres html2 devient vert, indiquant que nous écrivons Le code html saisi a été exécuté avec succès. Il y a une injection html dans ce site Web.
Injection HTML réfléchie (URL actuelle)
Tout d'abord, analysons le code source
code principal
<div> <h1>HTML Injection - Reflected (URL)</h1> <?php echo "<p align=\"left\">Your current URL: <i>" . $url . "</i>";?> </div>
Il y a un morceau de code PHP dans ce code, qui exécute l'instruction html et génère un morceau de "Votre URL actuelle : » et appelez la variable $url pour suivre le contenu de sortie.
Code de protection
$url= ""; switch($_COOKIE["security_level"]) { case "0" : // $url = "http://" . $_SERVER["HTTP_HOST"] . urldecode($_SERVER["REQUEST_URI"]); $url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; //$url= ''接受的参数来自请求头HOST和URL break; case "1" : $url = "<script>document.write(document.URL)</script>"; break; case "2" : $url = "http://" . $_SERVER["HTTP_HOST"] . xss_check_3($_SERVER["REQUEST_URI"]); break; default : // $url = "http://" . $_SERVER["HTTP_HOST"] . urldecode($_SERVER["REQUEST_URI"]); $url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; break; } <select name="security_level"> <option value="0">low</option> <option value="1">medium</option> <option value="2">high</option> </select>
En lisant le code de défense, vous pouvez comprendre que le code de défense appelé est différent selon la difficulté de la mise.
Lorsque vous définissez le niveau sur Low, exécutez l'instruction suivante
$url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
$_SERVER ici [ "HTTP_HOST"] signifie obtenir le nom de domaine actuel
Ici $_SERVER["REQUEST_URI"]" consiste à obtenir le chemin d'adresse complet derrière le nom de domaine
Modifier le paramètre d'hôte par paquet burp capture, vous pouvez trouver des changements survenus sur la page
Lors de la configuration du niveau à moyen, exécutez l'instruction suivante
$url = "<script>document.write(document.URL)</script>";
(3) élevéL'objet document représente ici l'intégralité du document HTML et peut être utilisé pour accéder à tous les éléments de la page
document.write() est dynamique Écrire du contenu sur la pagedocument.URL consiste à définir l'attribut URL pour ouvrir une autre page dans la même fenêtre
sera de niveau Lorsqu'il est défini sur élevé, exécutez l'instruction suivante$url = "http://" . $_SERVER["HTTP_HOST"] . xss_check_3($_SERVER["REQUEST_URI"]);
La fonction xss_check_3 est appelée pour filtrer la partie derrière l'hôte, ce qui la rend. impossible d'injecter.>Injection HTML - Stocké (Blog)
Remarque : la page réfléchissante n'existera plus après l'actualisation, tandis que le type de stockage est écrit dans la base de données du serveur et existera toujours après l'actualisation. HTML
Par conséquent, le type stockage est beaucoup plus nocif que le type réflexion.
Entrez
Tutoriel recommandé : "Tutoriel vidéo HTML"
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!