Mysql
 sql >> Base de données >  >> RDS >> Mysql

Les champs sélectionnés sont-ils vulnérables à toute sorte d'injection

Chaque élément d'un site Web peut être modifié par un utilisateur malveillant (champs cachés, divs, styles, appels ajax, etc.).

Cela dit, si vous utilisez déjà des instructions préparées, vous ne devriez pas trop vous soucier de l'injection SQL car mysql sait déjà quelles instructions vont être exécutées.

Au lieu de cela, vous devez désinfecter toute la sortie qui est rendue sur un site Web.

Disons que dans votre formulaire, vous demandez dans quel pays je vis de cette manière :

 <select name="country">
     <option value="Mexico">Mexico</option>
     <option value="USA">USA</option>
     <option value="Canada">Canada</option>
 </select>

mais je suis un utilisateur malveillant, et j'utilise l'inspecteur de code de Chrome pour modifier votre HTML, et je sélectionne le Mexique, mais change sa valeur en

<script type="text/javascript">alert("Hello World");</script>

et si vous affichez cette valeur dans une autre page de cette façon :

 Your country is: <?=$country?>

Ensuite, vous écrirez :

 Your country is:
 <script type="text/javascript">alert("Hello World")</script>

et une boîte d'alerte apparaîtra avec le texte "Hello World"

Quel mal puis-je faire avec ce que vous vous demandez peut-être...

eh bien, je peux faire tout ce que je veux avec ça, je peux voler des cookies ou si cette valeur est publique (disons que vous affichez cette valeur dans votre page d'accueil), alors je pourrais rediriger vos utilisateurs vers un autre site Web, modifier le contenu de votre site Web.. . tout ce que je veux.

Pour nettoyer la sortie de vos utilisateurs, vous pouvez utiliser

htmlentities

Cela convertira, par exemple, le &lt; > symboles à son code respectif :&lt; et &gt