script de login [PHP] - PHP - Programmation
Marsh Posté le 09-02-2006 à 20:04:56
moi, j'utilise ça , si tu veux t'en inspirer.
Code :
|
Marsh Posté le 09-02-2006 à 20:17:23
oui merci ça ma aidé à corrigé une erreur mais ce n'est pas vraiment ce que je cherche à faire! je pense que l'erreur vient de
Citation : $sql = "SELECT url FROM users WHERE pseudo='$pseudo' AND motdepasse='$motdepasse'"; |
je ne sais pas bien ou mettre des ' et des ", quelqu'un pour m'aider ?
Marsh Posté le 09-02-2006 à 21:09:09
Ca ne serait pas plutôt cela :
Code :
|
Marsh Posté le 09-02-2006 à 22:49:17
ça sent la futur faille php, genre SQL injection. Même pas de vérif au niveau des variable ni même un petit addslashes()..
C'est pourtant un classique le login...
http://www.haypocalc.com/wiki/Inje [...] t_de_passe
Marsh Posté le 10-02-2006 à 08:41:11
En sécurisant :
Code :
|
Est-ce suffisant pour éviter le SQLinjection ?
Marsh Posté le 10-02-2006 à 09:58:04
déjà plus sympa.
2ème chose, pour le motdepasse il serait plus sage de mettre son HASH genre MD5 dans la base. Non seulement ca évite d'avoir les pass écrit en clair (pratique si hack sur la base) et ça garantis (un minium) pour les utilisateurs que l'on va pas "piquer" leur passe. (Sachant qu'en règle général, la majorité des utilisateurs se serve du même pass pour tous leurs comptes...)
Marsh Posté le 10-02-2006 à 10:32:57
Code :
|
il te faudrait pas plustot ecrire :
Code :
|
?
Marsh Posté le 10-02-2006 à 11:15:26
odo91600 a écrit : moi, j'utilise ça , si tu veux t'en inspirer.
|
Script dangereux. Aucune protection du post. On peut y faire de l'injection SQL comme on veut. Les mots de passe ne doivent pas etre en clair dans la base .
Marsh Posté le 10-02-2006 à 13:27:00
ReplyMarsh Posté le 10-02-2006 à 15:00:27
oups (avé pas vu)
merci beaucoup pour le conseil
Marsh Posté le 10-02-2006 à 20:56:49
merci tout le monde de vos réponses mais j'ai pas vrément compris ce que je dois ajouter à mon script pour le sécurisé? :
Code :
|
Marsh Posté le 12-02-2006 à 18:27:09
Hello,
prennons un exemple :
$motdepasse = "' or '1'='1";
ta requete sql deviendrait :
$sql = "SELECT url FROM users WHERE pseudo='".$pseudo."' AND motdepasse='' or '1'='1'";
=> hop le malfaiteur peut se logguer avec n'importe quel login.
Pour securiser tout ça, il faut echapper les valeurs rentrées par l'utilisateur (addslashes, mysql_escapestring, ...)
Marsh Posté le 13-02-2006 à 11:16:44
j'ai refait mon script, sa marche :
Code :
|
par contre je n'ai pas bien compris ou je dois utiliser addslashes ou mysql_escapestring
quelqu'un peut t'il m'aider?
Marsh Posté le 13-02-2006 à 11:21:03
A chaque fois que tu utilises une variable qui peut provenir de l'utilisateur dans une requête.
http://fr3.php.net/mysql_real_escape_string
Marsh Posté le 14-02-2006 à 17:32:26
j'ai bien compris les injections sql mais je n'ai pas compris ce que fait mysql_real_escape_string, j'ai écrit sa:
Code :
|
est-ce suffisant?
Marsh Posté le 14-02-2006 à 21:19:13
mysql_real_escape_string t'assure que tout les carctère "spéciaux" on été echappé puisque c'est sa fonction.
Marsh Posté le 14-02-2006 à 23:17:17
et je dois ensuite passer mes variables dans addslashes() ou pas?
Marsh Posté le 14-02-2006 à 23:21:48
Non parceque tu risque de te retrouver avec plein de \\ dans ta chaîne. il me semble que mysql_real_escape_string() est suffisant.
Marsh Posté le 09-02-2006 à 19:54:37
echo 'Salut tout le monde,
Pour mon site, je dois écrire une page d'identification avec 2 champs : pseudo et mot de passe! Les pseudos et mots de passse sont stockés dans une base de donnée. Et je voudrais que quand le pseudos et le mot de passe sont bons,
il y est un lien vers une page qui soit spécifique à chaque utilisateur (pour ça j'utilise un champs url dans ma base de donnée)';
1) le formulaire:
2) le traitement du formulaire :
a chaque fois j'obtient "Pseudo ou mot de passe erroné! retour! ", quelqu'un peut t'il m'aider?
Message édité par hugoOo le 09-02-2006 à 20:13:00