[aide pour:]solutionner injection SQL

Fermé
phpdevellopeur - 1 févr. 2008 à 22:51
 phpdevellopeur - 1 févr. 2008 à 23:30
bonsoir je suis en train de develloper un petit site
pour l'instant il possede deux formulaires:

* un formulaire de login qui est ni plus ni moins un copier coller adapter (nom de variable ...) de celui present sur phpdébutant
* et un formulaire avec 2 champs : titre et un champ texte (avec TINYmce)


j'aimerai savoir ce que vous pensez du code de phpdébutant.

à présent la vrai raison de ce post

dans mon code php
var_dump($_POST['login']);
var_dump($_POST['pass']);
je remplit mon
mes deux champs avec
toto'='toto
voici les resultats de mes var_dump

string(13) "toto\'=\'toto"
string(12) "toto\'=\'tot"

oui oui j'ai bien mis toto'='toto pour les 2 champs enfin c'est pas le probleme
elle sont proteger mes chaines là ?
c'est normal ?

petite precision materiel
j'execute ce code en local (avec le apache de Léopard (MacOs 10.5.1))
d'avance merci pour vos réponse , remarques ...

6 réponses

atomy Messages postés 442 Date d'inscription jeudi 25 janvier 2007 Statut Membre Dernière intervention 11 août 2009 92
1 févr. 2008 à 22:57
Salut,

Première chose que je vois.. c'est que tu as un String(13) et un String(12)... donc, un caractère de moins en bas...
0
phpdevellopeur
1 févr. 2008 à 23:01
a oui oui enfin je viens de me rendre compte que j'avais mit la longueur à 10 caractere ... ceci explique donc cela .... mais pas les \
0
atomy Messages postés 442 Date d'inscription jeudi 25 janvier 2007 Statut Membre Dernière intervention 11 août 2009 92
1 févr. 2008 à 23:04
Salut,

Les \ sont des caractères "passe"... en gros, elles permettent de mettre un caractère, généralement interpreté par le code.

Qu'est-ce que tu voulais faire avec '='... je ne saisis pas!!
0
phpdevellopeur
1 févr. 2008 à 23:13
bon une injection sql :
dans ton php tu as ceci
$req = "SELECT uid FROM admins WHERE login='$login' AND password='$pass'";
si tu saisis ceci
' OR 'a'='a
ta requete sql devient:
SELECT uid FROM admins WHERE login='' OR 'a'='a' AND password='' OR 'a'='a'
donc n'importe qui peu se loggé n'importe quand

je cherche donc à eviter ceci
ici je chercher à voir je que j'envoyer , voir a quel hauteur ma chaine , MDP n'était pas protéger
je m'entendais à avoir
du genre
string(13) "toto'='toto"
string(12) "toto'='tot"
et non
string(13) "toto\'=\'toto"
string(12) "toto\'=\'tot"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
atomy Messages postés 442 Date d'inscription jeudi 25 janvier 2007 Statut Membre Dernière intervention 11 août 2009 92
1 févr. 2008 à 23:20
Salut,

Désolé... je pige pas pourquoi tu veux sortir 'toto'='toto' de ta phrase...? Est-ce qu'un usager va entrer ça, dans ton formulaire???
0
phpdevellopeur
1 févr. 2008 à 23:30
je cherche a eviter une possibilité de hacking nommé injection sql
en gros elle consiste à mettre du code SQL dans les champs de formulaire
il s'agit d'echapper tout les caractere speciaux afin qu'il ne soit pas pris en compte comme du sql.

Le truc étant que je me rends compte que php semble m'echapper deja certain caractere comme le ' le " et le\ je ne comprends pas pourquoi (a mon sens cela n'est pas un comportement normal je me trompe ?)
je me demande si c'est suffisant pour éviter ce type d'attaque
0