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. :oops:

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 ? :oops:
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
#-o
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 ? :oops:

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
#-o
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. #-o

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
#-o

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.

Image


Et le résultat :

Image

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 ;)