Bonjour, je cherche à sécurisé les faille de mon site(XSS,Include, etc) et j'ai remarqué quelquechose qui m'intrigue.
Prenons comme exemple le code ci-dessous:
si on entre dans le formulaire ce texte:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <?php if($_POST['nom']) { $var=$_POST['nom']; $var2=$var; echo $var2; } ?> <html> <form method="POST" action="index.php"> <input type="text" name="nom"/><br/> <input type="submit" /> </form> </html>
cela revient à:
Code : Sélectionner tout - Visualiser dans une fenêtre à part blablabla
Maintenant si on entre dans le formulaire les trois caractere suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?php if($_POST['nom']) { $var=$_POST['nom']; $var2=$var; echo "blablabla"; } ?>
On pourrait s'imaginer un code du type:
Code : Sélectionner tout - Visualiser dans une fenêtre à part "?>
bref, un bug...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?php if($_POST['nom']) { $var=$_POST['nom']; $var2=$var; echo ""?>; } ?>
Mais aparement ce n'est pas le cas: ça semble protéger (cool )
Mais un truc étrange aparait:
Si on met les trois caractere, on voit afficher
Code : Sélectionner tout - Visualiser dans une fenêtre à part "?>
Bref le code est celui la:
Code : Sélectionner tout - Visualiser dans une fenêtre à part \"?>
Ce que je comprend pas c'est pourquoi trois antislash? un seul suffirai:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?php if($_POST['nom']) { $var=$_POST['nom']; $var2=$var; echo "\\\"?>"; } ?>
Pourquoi php ajoute 2 antislash?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?php if($_POST['nom']) { $var=$_POST['nom']; $var2=$var; echo "\"?>"; } ?>
Partager