Cryptage du password dans la base de données

Fermé
lynda789456 Messages postés 225 Date d'inscription mercredi 24 février 2016 Statut Membre Dernière intervention 22 novembre 2016 - Modifié par lynda789456 le 28/04/2016 à 21:58
lynda789456 Messages postés 225 Date d'inscription mercredi 24 février 2016 Statut Membre Dernière intervention 22 novembre 2016 - 29 avril 2016 à 21:25
Bonsoir !
STP Jordane, comment je fais pour crypter mes password dans la base de données via ton code stp?
 <?php
//démarrage des sessions
session_start();

//connexion à la BDD
include 'connect.php';
mysqli_select_db('bdd');

   
//récupération "propre" des variables AVANT de les utiliser !
$login = isset($_POST['login']) ? $_POST['login'] : NULL;
$password = isset($_POST['password']) ? $_POST['password'] : NULL;

//traitement du formulaire
if(isset($_POST['submit'])) {

  if($login&&$password) {
   $sql = "SELECT * 
              FROM prof 
              WHERE login='$login' 
                  AND password='$password'";

   $query = mysqli_query($sql);
   $rows = mysqli_num_rows($query);
   if($rows==1) {
     $_SESSION['login'] = $login;
     header('Location:essai.php');}
     exit();
  
   }else{
    echo '<span style="color:#EE1010;">Pseudo ou mot de passe incorrecte</span>';
   }
 }else{
   echo '<span style="color:#EE1010;">Veuillez saisir tous les champs</span>';
 }
}
?>

Merci d'avance ;)

1 réponse

Xavierdu34 Messages postés 216 Date d'inscription lundi 2 décembre 2013 Statut Membre Dernière intervention 10 octobre 2016 21
Modifié par Xavierdu34 le 29/04/2016 à 17:01
Bonjour,

Il y a plusieurs façons de crypter le mot de passe, je te conseille de le faire directement en php au moment de l'inscription plutôt que par la database.

$pass = 'password' ;
$hash = password_hash($pass,PASSWORD_BCRYPT,['cost' => 13]) ;


Que se passe t'il si sur ton formulaire de login on met : (en admettant que le user admin existe)

admin';--

cela correspondrai à la requête suivante :

$sql = "SELECT * FROM prof WHERE login='admin';-- AND password='cequonveut'";


cette requête est la même que :

$sql = "SELECT * FROM prof WHERE login='admin';";


et cette requête retournera 1 résultat. soit lors de ta vérification :

 if($rows==1) {
     $_SESSION['login'] = $login;
     header('Location:essai.php');}
     exit();


Sans avoir le mot de passe, je pourrais me connecter en admin sur ton site.

Va faire un tour sur le top owasp 10, et particulièrement faire un tour sur l'injection SQL et l'injection de code.

Cdlt.
0
lynda789456 Messages postés 225 Date d'inscription mercredi 24 février 2016 Statut Membre Dernière intervention 22 novembre 2016
29 avril 2016 à 21:25
Ok merci pour les réponses ;)
Mais pourquoi t'as mis ce '13' ?,
$pass = 'password' ;
$hash = password_hash($pass,PASSWORD_BCRYPT,['cost' => 13]) ;

et je dois mettre cette ligne ou sur mon code stp ??
Cordialement ;)
0