Le script de site croisé (XSS) est une vulnérabilité de sécurité du réseau commune. En injectant le code malveillant dans la page Web, le code sera exécuté lorsque l'utilisateur accède à la page, ce qui peut entraîner la fuite d'informations utilisateur, l'exécution de l'opération malveillante et même le contrôle du site Web.
Par exemple, si un formulaire n'a aucune protection, un attaquant peut insérer un script malveillant similaire à ce qui suit:
<span class="fun"><script type = "text / javascript"> alert ('Hello world'); </script></span>
Une fois l'utilisateur qui a soumis le formulaire, le script sera injecté dans la page et tous les utilisateurs qui visitent la page seront affectés.
La première étape pour prévenir les XS est de filtrer et de vérifier efficacement toutes les données d'entrée utilisateur. Bien que PHP ait de puissantes fonctions de filtrage intégrées, il est recommandé d'écrire des fonctions de vérification ciblées conformément aux besoins de l'entreprise pour garantir la sécurité des données. Par exemple, vous pouvez définir une fonction pour vérifier que l'entrée ne contient que des lettres et des nombres:
function isStringValid($str) {
return preg_match('/^[a-zA-Z0-9]+$/', $str);
}
De plus, les caractères spéciaux entrés par les utilisateurs doivent être échappés pour éviter d'être analysés en code exécutable:
function escapeOutput($str) {
return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
}
Cette fonction utilise htmlSpecialCars () pour coder les balises HTML, empêchant ainsi l'injection de code JavaScript.
L'utilisation du jeton CSRF (Falon de demande de site transversal) est un moyen de protection efficace. Le serveur génère un jeton aléatoire stocké dans un cookie et place le jeton dans le champ Hidden Form. Lors de la soumission du formulaire, le serveur vérifie si les deux jetons sont cohérents, garantit que la source de demande est légale et empêche les demandes de contrefaçon.
L'idée de mise en œuvre est de générer des chaînes aléatoires, d'écrire des cookies et de former des champs cachés, de vérifier si les deux correspondent lors de la soumission, et seul le match sera traité.
En plus de la vérification des entrées, d'autres mesures de sécurité doivent être configurées:
L'utilisation de la fonction EVAL () est interdite car elle exécutera du code arbitraire et augmentera facilement les risques de sécurité.
Activer la politique de sécurité du contenu (CSP), limiter les ressources chargées et exécutées par le navigateur et réduire la surface d'attaque XSS.
Limitez le type de téléchargement de fichiers et la taille pour éviter que les fichiers malveillants entrent sur le serveur via des canaux de téléchargement.
Lors de la sortie des données, évitez d'insérer directement l'entrée de l'utilisateur, en particulier le contenu contenant des balises HTML. Les caractères spéciaux doivent être échappés à l'aide de fonctions de codage pour empêcher l'exécution du script. Par exemple:
$string = '<script>alert("XSS");</script>';
echo '<label>' . $string . '</label>'; // Écriture dangereuse
echo '<label>' . htmlspecialchars($string) . '</label>'; // Écriture sûre
Les attaques de scripts inter-sites (XSS) sont une vulnérabilité courante et dangereuse dans la sécurité du Web. En vérifiant et en filtrant strictement l'entrée des utilisateurs, en utilisant les jetons CSRF, en configurant raisonnablement les politiques de sécurité et en standardisant le codage de sortie, les développeurs peuvent réduire efficacement le risque d'attaques XSS. Ce n'est qu'en faisant attention continuellement à la dynamique de sécurité et à la mise à jour des mesures de protection que nous pouvons mieux protéger la confidentialité des utilisateurs et la sécurité du site Web.