Professional Documents
Culture Documents
/*
_____ _ ___ __
| ____|_ _(_) \ \ / /_ _ _ _
| _| \ \ / / | |\ \ /\ / / _` | | | |
| |___ \ V /| | | \ V V / (_| | |_| |
|_____| \_/ |_|_| \_/\_/ \__,_|\__, |
|___/
_____
|_ _|__ __ _ _ __ ___
| |/ _ \/ _` | '_ ` _ \
| | __/ (_| | | | | | |
|_|\___|\__,_|_| |_| |_|
[french] Protection contre le SQL Injection
Tutorial par : Moudi
Contact : <m0udi@9.cn>
English ( Avoiding SQL Injection ) : http://milw0rm.com/papers/358
Greetings : Mizoz, Zuka, str0ke, 599eme Man.
Please visit: http://unkn0wn.ws/board/index.php
*/
--------------------------------------------------------------------
Les SQL Injection sont parmi les failles les plus répandus et dangereux en PHP.
Ce tutorial va expliquer clairement le concept de SQL Injection et comment les évit
er, une fois pour toutes.
>>>>>> >>>>>>
Résumé de tutorial:
I) Présentation du problème.
=> Les variables contenant des chaînes
Ii) la sécurité.
=> Explication
=> Les variables numériques
. Méthode 1
. Méthode 2
>>>>>> >>>>>>
--------------------------------------------------------------------
I) Présentation du problème.
___________________________
Il existe deux types d'injection SQL:
* L'injection dans les variables qui contiennent des chaînes;
* L'injection dans les variables numériques.
Ce sont deux types très différents et a éviter, il agira
différemment pour chacun de ces types.
######################
Les variables qui contiennent des chaînes:
######################
Imaginez un script PHP qui récupère l'âge d'un membre conformément à son
surnom. Ce surnom est parti d'une page à l'autre via l'URL
(en $ _GET quoi: p). Ce script devrait ressembler à ceci:
++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++
+++++++++++++++++++
...
$ pseudo = $ _GET [ 'pseudo'];
$ requete = mysql_query ( "SELECT age FROM membres WHERE pseudo = '$ pseudo'");
...
++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++
+++++++++++++++++++
Eh bien tenez vous bien, ce script est une grande vulnérabilité par injection SQL.
Il suffit d'un mauvais garçon en mettant en place le nom d'utilisateur dans l'URL d
'une requête
comme ceci:
++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++
+++++++++++++++++++
'Password UNION SELECT FROM membres WHERE id = 1
++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++
+++++++++++++++++++