Retourner aux forums || Retourner au forum Programmation.php

Programmation.php : Problème pour faire un login

Posté par Mais qui suis-je ? :) () le 07 juillet 2008
0
Voilà je rencontre un problème assez étrange en essayent de faire un script login.php qui a pour mission de verifier login et password

Premier problème mySQL veut des ' ' autour du nom de la variable si je les mets l'espace est alors vide
second problème, si je force le nom a la main alors
-Si le mot de passe est juste aucune variable n'est interpreté
-Si le mot de passe est faux alors les variables sont interprétés
Je m'explique

/********************************
* login.php *
* Check login and password and *
* Allow or deny access *
********************************/
//Connection DB et ouverture session
$nom=$_POST["login"];
$pass=md5($_POST["password"]);
$sql='SELECT Md5_passwd,IdJ from NP2_Perso WHERE Nom=';
$sql.=chr(34);
$sql.="Moi"; // Ici $nom est en dur pour faire des essais
$sql.=chr(34);
$query=mysql_query($sql,$db);
$data = mysql_fetch_array($query);
$mdpass=$data["Md5_passwd"];
if ($pass==$mdpass) { // J'ai aussi testé avec strcomp le pb vient pas de la
/* Redirection */
}
else {
/* Message pour Debug */
echo " Mauvais Login ou Mot de Passe \n"; // Toujours affiché
echo $sql;
echo " \n";
echo "XXX"; // Toujours affiché
echo $nom; // N'est affiché que si mot de passe est faux
echo "";
echo $pass," ",$data["Md5_passwd"];
echo "
",$_POST["password"]; // Toujours même valeur si mot de passe est juste différente de celle en db
}
?>

Par exemple si bon mot de passe ça me retourne

Mauvais Login ou Mot de Passe
SELECT Md5_passwd,IdJ from NP2_Perso WHERE Nom="Moi"
XXX
d41d8cd98f00b204e9800998ecf8427e
b59c67bf196a4758191e42f76670ceba

Si mauvais mdp ça me retourne

Mauvais Login ou Mot de Passe
SELECT Md5_passwd,IdJ from NP2_Perso WHERE Nom="Moi"
XXXMoi
72777f7be5992b0789396f2b8d92c221
b59c67bf196a4758191e42f76670ceba
MauvaisMotdePasse

Je vous avoue que la je deviens fous

Y a t'il un expert dans la place...

> Lire le message (4 commentaires, moyenne: 2,5).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

une suggestion

Posté par fyah (page perso, ) le 07/07/2008 à 20:42. (lien). Évalué à 1.

bonsoir,

simple suggestion, voici comment je procède:

<?php
$qry="SELECT member_id FROM members WHERE login='".$_POST['login']."'
AND passwd='".md5($_POST['password'])."'";
$result=mysql_query($qry);

if(mysql_num_rows($result)>0) {
//Login Successful
//Regenerate session ID to
//prevent session fixation attacks
session_regenerate_id();
$member=mysql_fetch_assoc($result);
$_SESSION['SESS_MEMBER_ID']=$member['member_id'];
//Write session to disc
session_write_close();
header("location: member-index.php");
exit();
}

?>

Ce qui signifie en français que tu interroges ta BD avec le login et le md5 du pwd. S'il y a une ligne (au moins et normalement au plus) en résultat, c'est que le login est ok.

Bon courage.

  • [^]Re: une suggestion

    Posté par Jean B () le 07/07/2008 à 21:05. (lien). Évalué à 5.

    Attention aux injections tout de même.

    My 2 cents !

  • [^]Re: une suggestion

    Posté par Mais qui suis-je ? :) () le 07/07/2008 à 21:36. (lien). Évalué à 2.

    ça marche presque, les choses sont de plus en plus interessant j'ai l'impression que j'ai un bug qui vient du niveau inferieur

    Si ma requette est fausse mauvais nom de champ, après avoir fait la requette je fais
    echo $sql
    j'ai
    SELECT IdJ FROM NP2_Perso WHERE Nom='Moi' AND Md5_passxxwd='b59c67bf196a4758191e42f76670ceba'
    Ici mon le nom de mon champ MD5_passwd est faux, si je corrige la faute
    j'ai alors
    SELECT IdJ FROM NP2_Perso WHERE Nom='' AND Md5_passwd='d41d8cd98f00b204e9800998ecf8427e'

    Le tout en uttilisant la ligne de code de Fyah
    $sql="SELECT IdJ FROM NP2_Perso WHERE Nom='".$_POST['login']."'
    AND Md5_passxxwd='".md5($_POST['password'])."'";

    Précision technique,
    Ca tourne sur un compte free et j'ai vraiement l'impression de bloquer sur un problème bidon

    Par curiosité
    tu as le courage de m'expliquer le principe du session_regenerate_id();
    et des session fixation attacks ?
    Sinon j'irais jeter un coup d'oeil à l'occasion

    • [^]Re: une suggestion

      Posté par Mais qui suis-je ? :) () le 07/07/2008 à 21:45. (lien). Évalué à 2.

      Tiens c'est interessant ça,
      si je fait une redirection propre avec header()
      ça marche,
      en tout cas va falloir que je mene l'enquette

      Cool je me suis enfin répondu à moi même je vais pouvoir voir le fameux easter egg

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.php