IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

tester deux mots de passes


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 120
    Points : 66
    Points
    66
    Par défaut tester deux mots de passes
    Bonjour,
    Pour changer mot de passe je veux que l'ancien password à taper sera le même que celui dans la table qui est crypté
    vérification avec contrôle de saisie avec JS ça marche ou pas?

    On crypte le champ saisi et on le compare avec celui de la base qui est aussi en champ passV hidden


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <div class="form-group">
                        <div class="col-xs-12 col-md-4 col-md-offset-4">
     
                        <input type="hidden" id="passV" name="passV" value="<?php echo $results['password'];?>" />
     
                    </div>
                    </div>
    Ce champ caché contient le mot de passe crypté 'passV' est ce qu'on peut crypter le champ à saisir afin de le tester ça sera mieux de décrypter le passV

    Un bout de code dans le main.JS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      pass: {
                    validators: {
                        notEmpty: {
                            message: 'Required'
                        },
                        identical: {
                            field: 'passV',
    '  message: Ancien mot de passe incorrect'
                        }
                    }
                },
    J'ai fais un test dans l'update mais à cause de main.JS le test n'est pas bon : include ne fonctionne pas mais pas d'update si pass invalide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $pass = sha1(md5($_POST['pass']));
     
    	if ($pass == $_POST['passV']))
     
    	{..... update (...)}
    	else
    		{
    			include ('changepassword.php');
    			echo 'Ancien mot de passe incorrect';
    		}

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    on ne transmet jamais un mot de passe (crypté ou pas) dans un formulaire...

    1/ Vérification PHP : Il faut faire comme pour une inscription : une requête en BdD lors du traitement PHP(réception du mot de passe tapé, requête, comparaison avec celui en BdD).

    2/ Vérification JS : (dans main.js ?) il faut faire un appel AJAX vers un fichier PHP qui fera cette requête.

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 120
    Points : 66
    Points
    66
    Par défaut re
    Bonsoir,
    c'est vrai afin d'avoir une meilleure sécurité des données.

    Pour ajax est-elle facile d'utiliser une fonction pour faire cela?

  4. #4
    Invité
    Invité(e)
    Par défaut
    AJAX :

    • une fonction JS récupère la valeur tapée pour le mot de passe...
    • ... qui est transmis via AJAX à un fichier PHP...
    • ... dans lequel une requête permet de vérifier si ce mdp (une fois hashé) et dans la BdD...
    • ... puis renvoie true ou false à la fonction JS...
    • ... qui affiche un message d'erreur si false

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Et pour compléter ce qui a été dit,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pass = sha1(md5($_POST['pass']))
    Non. C'est dangereux. Le seul bon moyen pour chiffer un mot de passe, c'est d'utiliser password_hash. sha1 et md5 sont des algorithmes de hash rapide, et donc inappropriés pour les mots de passe. Même en ajoutant un salt, ce n'est pas suffisant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pass == $_POST['passV']
    Non. C'est dangereux. On ne doit pas utiliser l'opérateur égal (==) pour comparer des mots de passe. Ça ouvre la porte à du timing attack qui permet de "deviner" les mots de passe. Le seul bon moyen pour vérifier un mot de passe c'est password_verify.

    Pour le reste, voir ce que Jreaux62 a écrit.

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 120
    Points : 66
    Points
    66
    Par défaut re
    Bonjour,
    même si je tape le mot de passe correcte, il me dis mot de passe erroné

    code JS pour le field pass

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    pass: {
    				threshold: 8, //le nombre de caracteres saisie a partir du quel on lance la verification
                    validators: {
                        notEmpty: {
                            message: 'Required'
                        },
                        stringLength: {
                            min: 8,
                            max: 20,
                            message: '8 to 20  characters'
                        },
    					remote: {
    						message: 'Mot de passe erroné', //Le message d'erreur en cas de pass erroné
    						url: 'password.php',  // la page qui fait des verification du mot de passe
    						data: {
    						type: 'pass' //Le champs concerné
    					},
    						type: 'POST' //Envoi par methode post
    					}	
                    }
     
                },


    page password.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    session_start();
    	if ($_POST) {
     
    		include 'db.inc.php';
     
    		$pass = sha1(md5($_POST['pass']));
     
    	  $req="select password from inscription where email = '{$_SESSION['email']}'";
    	  $conn = $connexion->prepare($req);
    	  $conn->execute();
     
    	  $results	=	$conn->fetch();
     
    	  $estValide = (($pass == $results['password'])?true:false);
    		json_encode(array('valid' => $estValid));
    		exit;
    	}
     
    else {
    	header('Location: changepassword.php');
    }
    ?>

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ton deuxième ne produit rien, il ne manquerait pas un echo ?
    De plus revoit les requêtes préparées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    session_start();
    if (isset($_POST['pass'])) {
    	include 'db.inc.php';
     	$pass = sha1(md5($_POST['pass']));
     	$conn = $connexion->prepare("SELECT password FROM inscription WHERE email = :email");
     	$conn->execute(array(':email'=>$_SESSION['email']));
      	$results = $conn->fetch();
     	$estValide = ($pass == $results['password']);
     	echo json_encode(array('valid' => $estValid));
    }
    else {
    	header('Location: changepassword.php');
    }
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 120
    Points : 66
    Points
    66
    Par défaut re
    Bonsoir,
    ça fonctionne nickel merci beaucoup mon cher modérateur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tester un mot de passe dans un Active Directory
    Par Tidus159 dans le forum C#
    Réponses: 5
    Dernier message: 10/06/2011, 10h00
  2. ouverture de session par 1 Login et DEUX mots de passe
    Par pierredupont dans le forum Sécurité
    Réponses: 4
    Dernier message: 22/07/2009, 16h48
  3. Tester la compexité d'un mot de passe
    Par rysis83 dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2008, 16h46
  4. Crypter et tester un mot de passe
    Par ego dans le forum Sécurité
    Réponses: 3
    Dernier message: 30/03/2006, 19h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo