Page 1 sur 2
Hash avec salt
Posté : 07 juin 2011, 12:53
par Ez3kiel
Coucou,
Je suis en train de sécuriser ma partie connexion, et j'ai entendu parler des salt pour hash. Je n'avais jamais fait avant.
Donc dans ma bdd, au champs MotDePasse j'ai mis go5pro$1mvkhj6*cz4a8ùtvb+MONMOTDEPASSE et j'ai passer ce champs en md5
Et donc dans ma partie PHP je fais la requête
$LaRequete = "Select Login FROM t_utilisateurs WHERE Login = '$Login' AND MotDePasse = md5('go5pro$1mvkhj6*cz4a8ùtvb + $Pwd') ;";
Mais ça ne me connecte pas ...
Où est la boulette ?
Merci !
Re: Hash avec salt
Posté : 07 juin 2011, 14:48
par xTG
Les espaces autour du '+'

Re: Hash avec salt
Posté : 07 juin 2011, 14:58
par Ez3kiel
Ce sera déjà une erreur de moins, merci !
Cependant, ça ne marche toujours pas ...
Dans ma bdd, je rentre bien mon salt+motdepasse, et je passe le tout en md5 ?
Et donc en php, je fais ma requête
AND MotDePasse = md5('go5pro$1mvkhj6*cz4a8ùtvb+$Pwd') ;
Ce qui me transcriras le salt+motdepasse en md5, pour comparer avec le total enregistré dans la bdd ?
Aurais-je oublié quelque chose ?

Re: Hash avec salt
Posté : 07 juin 2011, 16:50
par Castor Gaspard
Bonjour,
Mais tu veux utiliser littéralement ou le signe plus ou ajouter à ta chaîne l'autre partie ?
Dans le deuxième cas, tu dois concaténer, non ?
Cordialement,
Gaspard
Re: Hash avec salt
Posté : 07 juin 2011, 17:03
par Ez3kiel
Euh si j'ai bien compris le principe du hash ... ajouter ma chaine à l'autre partie.
Donc du coup je viens d'essayer
MotDePasse = md5('go5pro$1mvkhj6*cz4a8ùtvb'+'$Pwd') ;
et
MotDePasse = md5('go5pro$1mvkhj6*cz4a8ùtvb.$Pwd') ;
et
MotDePasse = md5('go5pro$1mvkhj6*cz4a8ùtvb'.'$Pwd') ;
Nada. :s
Je viens même de passer la chaine go5pro$1mvkhj6*cz4a8ùtvb en variable, pour faire
md5('$hash'.'$Pwd')
ou
md5($hash.$Pwd)
ou
md5($hash+$Pwd)
Rien.

Re: Hash avec salt
Posté : 07 juin 2011, 17:25
par Castor Gaspard
Re...
Moi, si je fais...
<?php
$pwd = '12345';
$hash = 'go5pro$1mvkhj6*cz4a8ùtvb';
$foo = $pwd;
$foo .= $hash;
echo md5($foo); //966359d5de052df869f5ae0e72ec81ae
?>
J'ai l'impression que ça fonctionne, même si ma concaténation n'est pas très élégante diront les puristes.
Gaspard
Re: Hash avec salt
Posté : 07 juin 2011, 18:16
par dunbar
Salut,
@Ez3kiel quelle est la longueur du champ "MotDePasse " de ta TABLE ???
Il doit être de min 32 car 32 est la longueur de la chaine retourner sous forme hexadécimal
Attention aussi que la chaine ne sera pas la même suivant ta manière de faire
exemple
<?php
$salt = 'go5pro$1mvkhj6*cz4a8ùtvb';
$mot_de_passe = 'MONMOTDEPASSE';
$mt = $salt.'+'.$mot_de_passe; //14e530fc2e17c2cf3a2b562583b466e3
$mt = $salt.$mot_de_passe; //1804f9a41434a8f4fb872127e3645a7d
echo md5($mt);
?>
A+
Re: Hash avec salt
Posté : 08 juin 2011, 09:09
par Ez3kiel
Varchar (100). ^^
Et mon mdp fait 33 caractères.
J'ai essayé comme ceci
$hash = "s0mKvIe+-984**é";
$hash .= $Pwd;
echo md5($hash);
$LaRequete = "Select Login FROM t_utilisateurs WHERE Login = '$Login' AND MotDePasse = md5($hash) ;";
Mais il me retourne
086db0f353d080979d71c6790c12e236Erreur SQL !
Select Login FROM t_utilisateurs WHERE Login = 'admin' AND MotDePasse = md5(s0mKvIe+-984**éadmin1) ;
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*éadmin1)' at line 1
Nb: j'ai fais echo md5($hash) pour vérifier, et je me retrouver avec un hash différent de celui de ma table, alors que c'est bien le même salt et le même Mot de passe passés en Md5 dans ma table.

Re: Hash avec salt
Posté : 08 juin 2011, 11:46
par dunbar
Et comme ceci
<?php
$hash = "s0mKvIe+-984**é";
$hash .= $Pwd;
echo md5($hash);
$LaRequete = "Select Login FROM t_utilisateurs WHERE Login = '".$Login."' AND MotDePasse = '".md5($hash)."'";
?>
Re: Hash avec salt
Posté : 08 juin 2011, 12:10
par Ez3kiel
Et bien il me fait mon echo $hash : 086db0f353d080979d71c6790c12e23
Mais il reste différent de celui de ma bdd ...
c7272ad6d1e5af1ee96386f119ad9b4
Et en prime je suis gratifié d'un
Warning: Cannot modify header information - headers already sent by (output started at /homez.228/armorgen/www/administration/admin_exec.php:28) in /homez.228/armorgen/www/administration/admin_exec.php on line 44

Re: Hash avec salt
Posté : 08 juin 2011, 13:53
par moogli
yop,
montre nous
- le code actuel
- un echo du $hash
- et un echo "brut" du select MotDePasse from t_utilisateurs WHERE Login = '".$Login."'
(d'ailleurs il vient d'ou le $login ?)
@+
Re: Hash avec salt
Posté : 08 juin 2011, 14:41
par Ez3kiel
Page de connexion (admin.php) :
<form name="F_connexion" method="post" action="admin_exec.php" enctype="multipart/form-data">
<table>
<tr ><td >Votre login </td><td ><input size=20 type="text" name="Login"></td></tr>
<tr ><td > Votre mot de passe </td><td ><input size=20 type="password" name="MotDePasse"></td></tr>
<tr ><td colspan="2" class="TD_ACentrer"><input type="SUBMIT" size="20" name="B_Envoyer" value="Envoyer"> </tr>
</table>
</form>
</div>
</div>
<?php
//On teste la variable retour
if (isset($_GET['retour']))
{
//On regarde si elle est égale à 1
if ($_GET['retour']==1)
{
?>
<script langugage="text/Javascript">
alert('Vous avez rentré un mauvais login ou mot de passe')
</script>
<?php
}
else //Sinon c'est que on a modifié l'url, alors tentative d'intrusion
{
?>
<script language="Javascript">
alert("Tentative d'intrusion repérée")
</script>
<?php
}
}
?>
Page d'execution (admin_exec.php) :
<?php
session_start();
//récupération des données de la page login (admin)
$Login=$_POST['Login'];
$Pwd=$_POST['MotDePasse'];
//Connexion à la base et séléection de la BDD
include("Connect.php");
$cnx=mysql_connect(SERVEUR,NOM,MDP) or die("Erreur de connexion sur serveur MySql :".SERVEUR );
mysql_select_db(BASE, $cnx ) or die("Erreur de connexion à la base de données" . BASE);
// la requête de vérification de l'existence de l'utilisateur
$hash = "s0mKvIe+-984**é";
$hash .= $Pwd;
echo md5($hash);
$LaRequete = "Select Login FROM t_utilisateurs WHERE Login = '".$Login."' AND MotDePasse = '".md5($hash)."'";
//exécution de la requête et fermeture de la connexion
$ResultatRequete = mysql_query($LaRequete) or die("Erreur SQL ! <br><br>".$LaRequete."<br><br>".mysql_error());
//si aucun retour c'est que l'utilisateur ou le mot de passe n'est pas valide ==> retour à la page login
if(mysql_num_rows($ResultatRequete) == 0)
{
header("location: admin.php?retour=1");
}
//sinon création des variables sessions et branchement au menu de l'administration
else
{
$_SESSION['NumSession']=session_id();
$_SESSION['Utilisateur']=$Login;
header("location: menu_admin.php");
}
?>
Echo de $hash :
086db0f353d080979d71c6790c12e236
Echo de $LaRequete :
Select Login FROM t_utilisateurs WHERE Login = 'admin' AND MotDePasse = '086db0f353d080979d71c6790c12e236'
Et dans la table, valeur de MotDePasse après md5 :
c7272ad6d1e5af1ee96386f119ad9b40
Re: Hash avec salt
Posté : 08 juin 2011, 16:25
par dunbar
Et comment il est arriver en base ?

Montre nous ton inscription ou autre
Re: Hash avec salt
Posté : 09 juin 2011, 08:54
par Ez3kiel
Je l'ai rentré à la main en QBE dans PhpMyAdmin.
Et le résultat :
Il n'y a pas de page d'inscription car il n'y a qu'un utilisateur, admin, pour accéder à l'interface d'administration.

Re: Hash avec salt
Posté : 09 juin 2011, 10:53
par moogli
J'suis p'tet mirro mais dans $hash entre v et e y a un i majuscule (I) et dans pma c'est un i ou un l (avec les différentes police ca se confond :/)
A tu essayé ton code remplacant le hash de la base par celui que tu affiche b? (en virant la fonction md5 bien sur)
D'ailleurs par curiosité a quoi ressemble la requete sql que pma utilise lors de insertion tel que tu l'a fait ?
@+
Ps : juste au cas ou : pma = phpmyadmin
