Quels sont les types d'attaques XSS ? Des exemples de code spécifiques sont nécessaires
Avec le développement rapide d'Internet, les applications Web jouent un rôle de plus en plus important. Cependant, les menaces à la sécurité Web augmentent également, parmi lesquelles XSS (cross-site scripting Attack) est l'un des types d'attaques les plus courants. Les attaques XSS font référence à l'injection de scripts malveillants dans des pages Web lorsque les utilisateurs visitent la page Web, les scripts seront exécutés dans le navigateur de l'utilisateur, provoquant des fuites d'informations ou des attaques.
Les attaques XSS peuvent être divisées en trois types : XSS stockés, XSS réfléchis et XSS basés sur DOM. Les trois types seront présentés en détail ci-dessous et des exemples de code spécifiques seront fournis à des fins de démonstration.
Stored XSS signifie que le script malveillant est stocké sur le serveur cible, et lorsque l'utilisateur accède à la page contenant le script, le script sera exécuté. Les attaquants injectent généralement via des zones de saisie, des forums de discussion et d'autres endroits où les utilisateurs peuvent saisir.
Ce qui suit est un exemple de code pour XSS stocké :
<script> var maliciousScript = "<script>alert('存储型XSS攻击!')</script>"; // 将恶意脚本存储到数据库中 saveToDatabase(maliciousScript); </script>
Le code ci-dessus stocke le script malveillant dans la base de données, et sera ensuite récupéré de la base de données et exécuté lorsque la page sera chargée.
Reflected XSS signifie que les scripts malveillants sont transmis au site Web cible via l'URL. Le site Web insère le script dans la page lors du traitement de l'URL, puis renvoie la page à l'utilisateur. Lorsqu'un utilisateur clique sur une URL contenant un script malveillant, le script est exécuté dans le navigateur de l'utilisateur.
Ce qui suit est un exemple de code pour XSS réfléchissant :
<!-- 假设这是一个搜索页面 --> <input type="text" name="keyword" value="<?php echo $_GET['keyword']; ?>"> <!-- 将用户输入的值直接输出到页面上,存在XSS风险 --> <script> var keyword = "<?php echo $_GET['keyword']; ?>"; document.write("搜索结果:" + keyword); </script>
Dans le code ci-dessus, les mots-clés de recherche de l'utilisateur sont transmis au serveur via les paramètres d'URL, et le serveur insère les mots-clés dans la page HTML et la renvoie à l'utilisateur. Si le mot-clé saisi par l'utilisateur contient un script de manière malveillante, le script sera exécuté.
XSS basé sur DOM est une méthode d'attaque XSS basée sur les opérations DOM. L'attaquant met en œuvre l'attaque en modifiant la structure DOM de la page, plutôt que de modifier le contenu renvoyé par le serveur comme le XSS stocké et réfléchi.
Ce qui suit est un exemple de code XSS basé sur DOM :
<!-- 假设这是一个计算器页面 --> <input type="text" id="number1" value="0"> <input type="text" id="number2" value="0"> <button onclick="calculate()">计算</button> <!-- 将用户输入的值直接输出到页面上,存在XSS风险 --> <script> function calculate() { var num1 = document.getElementById("number1").value; var num2 = document.getElementById("number2").value; var result = num1 + num2; // 用户输入可能包含恶意脚本 document.getElementById("result").innerText = "计算结果:" + result; } </script>
Dans le code ci-dessus, le numéro saisi par l'utilisateur sera directement affiché sur la page. Si la valeur saisie par l'utilisateur contient un script de manière malveillante, alors le. le script sera exécuté.
En développement réel, afin de prévenir les attaques XSS, nous pouvons prendre les mesures suivantes : validation des entrées et filtrage des entrées utilisateur, encodage HTML de la sortie, etc.
En bref, les attaques XSS sont divisées en trois types : XSS stockés, XSS réfléchis et XSS basés sur DOM. Comprendre ces types d'attaques et les défenses correspondantes est essentiel pour sécuriser vos applications Web. Dans le même temps, les développeurs doivent toujours rester vigilants pour découvrir et réparer rapidement les vulnérabilités XSS potentielles afin de garantir la sécurité des applications Web.
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!