password_hash il ressort différent a l'affichage ???

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : password_hash il ressort différent a l'affichage ???

Re: password_hash il ressort différent a l'affichage ???

par Spols » 08 avr. 2019, 08:24

if(password_verify($password, $hash_pass))
tu vérifie le password du formaulaire avec le password du formulaire haché. or ton pasword est vérifié dans la requète.

Tes if sont mal concu aussi, aucune vérification de compte activé ou non

remarque générales, évite les extract($_POST) on sait jamais cfe qu'un utilisateur malveillant pourrait injecter. toujours lister ce que tu veux récupérer et vérifier que cela correspond à ce que tu veux.
- dans chaque requète toujours préciser les champs à récupèrer.

Re: password_hash il ressort différent a l'affichage ???

par asgardlegrand » 08 avr. 2019, 05:53

Une idee?

Re: password_hash il ressort différent a l'affichage ???

par asgardlegrand » 07 avr. 2019, 16:34

ok j'ai trouvé c'est avec le probleme du cost definis dans la fiche inscription mais pas dans le log, cependant meme quand je l'enleve ca me connecte pas a la page souhaité.
je dois avoir un soucis avec les if et les else mais je ne vois plus ou.

Re: password_hash il ressort différent a l'affichage ???

par asgardlegrand » 07 avr. 2019, 16:25

pour info le dernier echo etait la pôur verifier l'existance d'information requise.

password_hash il ressort différent a l'affichage ???

par asgardlegrand » 07 avr. 2019, 16:24

bonjour je suis en train de securiser l'inscription et surtout le mot de passe du client j'ai donc deux fichiers , le premier noté inscription.php qui aprés validation permet au client de se connecter via le fichier log.php

fichier inscription.php
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="css/logs.css">
</head>
<body>

<form method="post">
    <h1>Inscription</h1></br>
		<input type="text" name="nom" id="nom" placeholder="nom" required></br></br>
		<input type="text" name="prenom" id="prenom" placeholder="prenom" required></br></br>
		<input type="text" name="tel" id="tel" placeholder="votre numero de telephone" required></br></br>
		 <select name="grade" id="grade" required>
       <option value="candidat">Candidature milice</option>
       <option value="Alias">Alias</option>
   </select>
		<input type="text" name="mail" id="mail" placeholder="mail valide" required></br></br>
		<input type="text" name="pseudo" id="pseudo" placeholder="Pseudo" required></br></br>
		<input type="text" name="password" id="password" placeholder="mot de passe" required></br></br>
		<textarea type="text" name="motiv" id="motiv" placeholder="lettre de motivation" required></textarea></br></br>
		<input type="submit" name="formsend" id="formsend" value="Envoyer la candidature">
</form>

<?php
include 'database.php';
global $db;

if(isset($_POST['formsend']))
{
		
  extract($_POST);
  if(!empty($password)){
	  $options = [
	  'cost' => 12,
	  ];
	  $hashpass = password_hash($password, PASSWORD_DEFAULT, $options);
 
  $q = $db->prepare("INSERT INTO `users`(`nom`,`prenom`,`tel`,`grade`,`mail`,`pseudo`, `password`, `motiv`) VALUES ('$nom','$prenom','$tel','$grade','$mail','$pseudo','$hashpass','$motiv') ");
  $q->execute();
  echo "Votre candidature est réalisee, un membre de la milice prendra contact avec vous";
  ?></br><a href="index.php">Retour à l'acceuil</a><?php
 
  }
  else {
            $er =  "vous n'avez pas été enregistré car vos mot de passe sont différents "  ;
                  header("location: inscription.php?erreur=".$er); 
        
      }
  }
?>


</body>
</html>
fichier log.php
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="css/logs.css">
</head>
<body>
    <img src="img/images.jpg">
<form method="post">
		<input type="text" name="pseudo" id="pseudo" placeholder="Identifiant" required></br></br>
    <input type="text" name="password" id="password" placeholder="Password" required></br></br>
		<input type="submit" name="formsend" id="formsend" value="Connection">
</form>
<a href="inscription.php">Postez une candidature</a></br>

<?php
session_start();


include 'database.php';
global $db;


if(isset($_POST['formsend']))
		{
			extract($_POST);
			$hash_pass = password_hash($_POST["password"],PASSWORD_DEFAULT);
			$q = $db->prepare("SELECT * FROM `users` WHERE `password` = :hash_pass");//Il est toujours mieux de spécifier les champs dont tu as besoin
			$q->execute(['hash_pass' => $hash_pass]);
			$result = $q->fetch();
			$_SESSION['group']= $result['group'];
			$_SESSION['nom']= $result['nom'];
			$_SESSION['prenom']= $result['prenom'];
	
				if($result == true)
				{				
					if(password_verify($password, $hash_pass))
						{				
						header('Location:menu.php');
						}
					else 
				{
					echo "le mdp est incorrecte ou votre compte n est pas activé";
				}
			
				}

				else {
					echo "Le compte avec l identifiant : $password  et $hash_pass n'existe pas ou vous n etes pas encore valide contactez un officier general";
	
					}

		}
?>




</body>
</html>

mon probleme est le suivant lors que j'affiche le mot de passe haché pouyr vérifier qu'il est bien celui inscrit dans la base de donnée je m'apercoit qu'ils sont différents et le log ne fonctionne donc pas.

lez mot de passe de la base de donnée est $2y$12$SuXfc/nLvKz5rDcaoAzkYeGXIywFT3b6m6sP7YV2rjiiewl72AGDK alors que celui qui est recupéré par le log est $2y$10$GmwiAsJ0ZzkP1azCUskIoOdTp7KrZ0qTElDzBTVjozDXT4UkOc1dS il ne peux donc pas accepter que le client se log pour le pseudo et le mot de passe sont bien identique.
merci de votre aide.