Je vien de telecharger l'application Testpassport engine ou il y'a des test sur php
parmis eux la suivante
la réponse correcte est B, mais je ne sais pas pourquoi. si vous pouvez m'expliquer ce la ...?
Merci d'avance
Je vien de telecharger l'application Testpassport engine ou il y'a des test sur php
parmis eux la suivante
la réponse correcte est B, mais je ne sais pas pourquoi. si vous pouvez m'expliquer ce la ...?
Merci d'avance
Parce qu'il n'y a pas de htmlentities ou htmlspecialchars
Pour être plus clair,
Si tu avais un formulaire contenant un champ dont le nom est "name" et que, une fois le formulaire soumis, tu executais le code suivant :
Une personne pourrait injecter un code malveillant dans ta page, il lui suffirait pour cela de mettre du code tel que ceci dans le champ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<?php echo 'Bonjour ' . $_POST['name'] ?>
En l'occurence, mon code ne fait qu'ouvrir une popin, mais quelqu'un pourrait executer un code javascript permettant de récupérer les cookies et les envoyer par méthode GET ou POST à un serveur pour les analyser.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <script type="text/javascript"> alert('Code maveillant ! -_-'); </script>
C'est ce qu'on appelle le Cross Site Scripting.
il faut, comme l'indique blueice, nettoyer ta chaine avec des fonctions comme htmlentities ou htmlspecialchars, voire strip_tags paramétré.
si ça marche pas chez moi, il y'a surement une directive de securité activé dans php.ini ? parceque rien n'est affiché quand j'envois
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <script type="text/javascript"> alert('Code maveillant ! -_-'); </script>
surement puisque :
image 1:
image 2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php echo '<form method="post" action="">'; echo '<input type="text" name="exemple" value="valeur par défaut" />'; echo '<input type="submit" />'; echo '</form>'; echo $_POST['exemple']; ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php echo '<form method="post" action="">'; echo '<input type="text" name="exemple" value="valeur par défaut" />'; echo '<input type="submit" />'; echo '</form>'; echo htmlentities($_POST['exemple']); ?>
oui mais je devrai avoir une alerte javascript sans le htmlentities,moi je l'ai pas mon $_POST ne contient rien quand on inserre des caracteres qui debute avec "<" rien ça doit être un config dans php.ini ?
si tu mets <n importe quoi> forcemment ca n'affichera rien (mais la chaine sera bien visible dans la source.quand on inserre des caracteres qui debute avec "<"
Non justement
voici ma source
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <form name= "form" method="post" action="" enctype="multipart/form-data"> <input type = "text" name="sa"/> </form>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <html><head></head> <body> <form method="post" action=""> <input name="exemple" value="valeur par défaut" type="text"> <input type="submit"></form> <script type="text/javascript"> alert('Code maveillant ! -_-'); </script> </body></html>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <html><head></head> <body> <form method="post" action=""> <input name="exemple" value="valeur par défaut" type="text"> <input type="submit"></form> <script type="text/javascript"> alert('Code maveillant ! -_-'); </script> </body></html>
Bizare c'est sous chrome que ça passe pas, sous ie ça passe
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager