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

PHP & Base de données Discussion :

comment crypter mon mot de passe


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 19
    Points
    19
    Par défaut comment crypter mon mot de passe
    salut . j'ai un code qui marche mais mon problème est que le mot de passe n'est pas crypté . je suis débutant en php je sais pas comment m'y prendre.
    j'ai vu des sujet sur MD5 . mais j'arrive pas a l'utiliser.

    ma table :

    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
    -- 
    -- Structure de la table `members` 
    -- 
     
    CREATE TABLE IF NOT EXISTS `members` ( 
    `id` int(4) NOT NULL AUTO_INCREMENT, 
    `username` varchar(65) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', 
    `password` varchar(65) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', 
    PRIMARY KEY (`id`) 
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=18 ; 
     
     
    INSERT INTO `members` (`id`, `username`, `password`) VALUES 
    (1, 'msi79', 'cool75sool') 
    );
    inscription.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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    <?php
    $date = date("d-m-Y");
    $heure = date("H:i");
    echo 'Nous sommes le '.$date.' et il est '.$heure;
    ?>
     
    <?php
    if (isset($_POST["valider"])) {
     
          /*IMPORTANT*/ 
     
    include("connection.php"); 
     
    /*faut securiser*/ 
    foreach($_POST as $k => $v){ 
    $v=mysql_real_escape_string(strip_tags($v)); 
    $_POST[$k]=$v; 
    } 
     
    /*faut securiser*/ 
    foreach($_GET as $k => $v){ 
    $v=mysql_real_escape_string(strip_tags($v)); 
    $_POST[$k]=$v; 
    }
       $username=trim($_POST["username"]);
       $password=trim($_POST["password"]);
     
     
     
            // on regarde si l'url existe déjà 
      // on regarde si l'url existe déjà 
        $sql = "SELECT username FROM members WHERE username='$username'"; 
        $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());  
     
        // on compte le nombre de résultats 
        $res = mysql_num_rows($req); 
     
          if($res!=0)  // l'url existe déjà, on affiche un message d'erreur 
            { 
                 $msg = 'Désolé, mais ce nom  existe déjà dans notre base.'; 
                 echo '<script>alert(\' '.$msg.' \');</script>' ;
            } 
         else  // L'url n'existe pas, on insère les informations du formulaire dans la table 
            { 
     
          $sql = "INSERT INTO members(id,username,password) VALUES('','".$username."','".$password."')";                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
          // on insère les informations du formulaire dans la table  
          mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
          $msg =  'Les informations sur l inscription  ont été ajoutées dans la base de données.</br>';
     
          ///echo '<font color="red">'.$msg.'</font>'; 
          echo '<script>alert(\' '.$msg.' \');</script>';
     
              session_start();
                                    $_SESSION['username'] = $_POST['username'];
                                    header('Location: login_success.php');
                                    exit();
          }
     
    }
    ?>
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Document sans titre</title>
    <style type="text/css">
    <!--
    .Style1 {       color: #FFFFFF;
            font-weight: bold;
    }
    -->
    </style>
    </head>
     
    <body>
    <form id="form1" name="form1" method="post" action="">
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <table width="524" border="0" align="center" bgcolor="#FF00FF">
        <tr>
          <td colspan="2"><div align="center" class="Style1">
              <h1>Inscription &agrave; l'espace membre :</h1>
          </div></td>
        </tr>
        <tr>
          <td width="228"><span class="Style1">Login : </span></td>
          <td width="286"><input type="text" name="username" value="" /></td>
        </tr>
        <tr>
          <td><span class="Style1">Mot de passe : </span></td>
          <td><input type="password" name="password" value="" /></td>
        </tr>
        <tr>
          <td colspan="2"><table width="83" border="0" align="center">
              <tr>
                <td width="77"><input type="submit" name="valider" value="Inscription" /></td>
              </tr>
          </table></td>
        </tr>
      </table>
    </form>
    </body>
    </html>
    index.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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <style type="text/css">
    <!--
    .Style8 {
            color: #FF00FF;
            font-style: italic;
    }
    .Style11 {color: #FFFFFF; font-style: italic; }
    -->
    </style>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
    <tr>
    <form name="form1" method="post" action="checklogin.php">
    <td>
    <table width="100%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#0A5B79">
    <tr>
    <td colspan="3"><table width="512" border="0" align="center">
      <tr>
        <td width="395"><h1 align="center" class="Style8">Identifiez-vouz !! </h1></td>
        <td width="101"><img src="images/logo3.jpg" alt="dfghj" width="100" height="70" /></td>
      </tr>
    </table></td>
    </tr>
    <tr>
    <td width="69"><span class="Style11">Username</span></td>
    <td width="7"><span class="Style11">:</span></td>
    <td width="422"><input name="myusername" type="text" id="myusername" ></td>
    </tr>
    <tr>
    <td><span class="Style11">Password</span></td>
    <td><span class="Style11">:</span></td>
    <td><input name="mypassword" type="text" id="mypassword" ></td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td><input name="Submit" type="submit" value="Login">
      <table width="78" border="0" align="right">
        <tr>
          <td><a href="inscription2.php" class="Style11">Inscription!!</a></td>
        </tr>
      </table></td>
    </tr>
    </table>
    </td>
    </form>
    </tr>
    </table>
    deconnexion.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    session_start();
    session_unset();
    session_destroy();
    header('Location: index.php');
    exit();
    ?>

  2. #2
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Salam ; fait un tour :
    coté mysql
    http://dev.mysql.com/doc/refman/5.0/...functions.html

    essaye et en verra

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    MD5 n'est pas une fonction de cyptage mais de hashage. Attention à bien faire la différence.
    Pour le cryptage avec php il existe l'extension Mcrypt : http://www.php.net/manual/fr/ref.mcrypt.php
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Re; merci grunk , j'ai reconsulter la doc et voila :
    http://php.net/manual/fr/function.md5.php
    It is not recommended to use this function to secure passwords, due to the fast nature of this hashing algorithm. See here for details.
    en francais :
    Il n'est pas recommandé d'utiliser cette fonction pour les mots de passe sécurisés, en raison de la nature rapide de cet algorithme de hachage
    merci

  5. #5
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    au passage même combat pour sha1... et même sha2

    le pourquoi est simple... une fonction qui sert à faire du hashage va en fait calculer une clé à partir d'une valeur... je rappelle quel le hash est une technique de classement...

    or ces fonctions vont donc générer la même clé pour plusieurs valeurs contrairement à une fonction de cryptage qui génère une clé unique en fonction de la valeur...

    on peut donc faire des collisions car il suffit de trouver l'une des valeurs qui génère la clé recherchée...

    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    La principale différence c'est aussi et surtout que le cryptage est réversible ce qui n'est pas le cas du hashage.

    Soit dis en passant trouver une collision en sha1 c'est pas vraiment à la portée du premier pc venu , donc on est relativement tranquille
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    le hash le plus connu c'est le hash lexicographique (dico):
    tous les mot commençant par a donneront a comme clé de hash

    par contre à partir de a tu ne peut pas savoir quel mot à été utilisé...

    mais tous les mots commençant par a donnant a comme clé utilisé un tel hash pour "crypter" serait de la folie vu le nombre de colisions qu'on peut engendrer pour chaque clé...

    collisioner du sha1, c'est un peu plus long mais loin d'être si dur...
    c'est sur que le kéké qui utilise des truc tout fait va avoir du mal...

    mais celui qui le fait avec la connaissance et des moyens... là on joue pas dans la même court...

    même les vrais cryptages sont cassables...

    faut pas oublier que les gens sont pas ou peu sensibilisés à la sécurité...

    ils utilisent le même mots de passe souvent pour des trucs de loisir et banque, etc...

    tu crois que les attaques sur les sites de e-commerce ou les forum ou les sites de mmorpg ça leur sert à quoi?

    juste nuire aux gens et mettre une page web bidon sur le site ou le compte du type?

    le seul soucis c'est que les fonctions de cryptage comme aes nécessite des paramétrages qui ne sont pas fournit par mysql donc tu ne peux pas utiliser des versions js coté client pour t'envoyer des truc crypté... donc tu es obliger de coder une fonction qui utilise les mêmes paramétrage que le client et pas celle native vu le peu d'infos qu'ils donnent


    quand au DES 32 à 64 bits, la version implémentée dans mysql ou les vieux Windows, tu pouvais casser 200 mots de passe et 1/2 à 1 heure sur des pc d'il y a 10 ans...

    avec une rainbow table tu peux casser du md5 ou du sha1 assez rapidement car tu joues sur le fait que le système de calcul ne marche pas vraiment de manière aléatoire...

    et chercher un mot de passe qui n'est pas changé très fréquemment, ne nécessite pas d'être pressé...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    faut juste rajouté un salt et/ou faire plusieurs passe

  9. #9
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    oui

    si tu es super sérieux tu le change à chaque échange... mais après c'est un compromis sur les performances à faire
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 383
    Points : 10 411
    Points
    10 411
    Par défaut
    Citation Envoyé par ericd69 Voir le message
    au passage même combat pour sha1... et même sha2

    le pourquoi est simple... une fonction qui sert à faire du hashage va en fait calculer une clé à partir d'une valeur... je rappelle quel le hash est une technique de classement...

    or ces fonctions vont donc générer la même clé pour plusieurs valeurs ...
    Oui enfin ce n'est pas non plus si fréquent que ton message pourrait le laisser penser...

  11. #11
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    atteignable en un temps fini pas démesuré même avec un seul ordi actuel

    comme je l'ai dit, le vrai risque c'est pas le kéké qui se prend pour un hackeur avec les quelques trucs téléchargé sur un warez...

    c'est le mec avec des moyens (clusters d'ordi) et qui vient dans le but de te voler tes données clients... et qui fabrique sans difficulté les logiciels pour trouver les collisions ou casser les cryptages...

    car lui il cherche les numéros de cb, etc... pour se faire du fric en les revendant...

    bref tout est relatif mais faut savoir que c'est pas si dur que ça peut le paraitre non plus...

    c'est pas pour rien que md5, sha1 et sha2 sont interdite d'emploi pour de la cryptologie...

    c'est des fonctions de hash, pas liées à la cryptologie et les détourner pour en faire à cause d'une illusion est stupide car plus la puissance des machines augmente plus ça les rend dangereuse...

    je rappelle que la plupart des algo de vrai cryptage sont trouvable et assez souvent leur code aussi pour différents langages... notamment l'AES ou le DES

    après chacun est libre d'utiliser ce qu'il veut à ses risques et périls...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    crypt != hash

  13. #13
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    pour ceux qui veulent: l'AES en javascript
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  14. #14
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Salam ; ericd69 , stealth35,ABCWEB ,grunk
    vue le débat qui touche un élément important du développement et de la sécurité web (niveau de vulnérabilité ...) !!!!!
    en plus de ce qui est dans le lien: http://julien-pauli.developpez.com/t...-web-securite/
    quel sont les Best Practices selon votre expérience ?

  15. #15
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    hé bien... de comprendre 2 choses:
    • celui qui veut les infos que tu crypte, les obtiendra s'il prend le temps et se donne les moyens
    • qu'il faut identifier ce que tu as vraiment besoin de crypter dans l'échange...

    en gros, il y a 2 grands types d'application:
    • la simple identification et le reste des échanges ne nécessitant de cryptage, genre un forum, blog, jeu... on utilise l'AES ou le RSA voire le 3DES
    • l'espace client ou une zone d'administration, etc... on utilise le SSL

    l'activation SSL étant payante (obtention d'un certificat) c'est plus utilisé pour des sites sensibles ou administratifs (administration publique, banque, espace de payement e-commerce ou pour les jeux,...)

    Perso je suis plus fana de laisser les banque faire leur boulot pour la sécurisation des paiements via des interfaces à la paypal par exemple... que de vouloir intégrer un système de paiement via certains frameworks actuel...

    la raison est simple... les groupes mafieux ont de gros moyens et sont toujours à la recherche d'identifications bancaires... si les clients d'un site se font voler leur infos préenregistrées numéro de cb, etc...) c'est alors la responsabilité du marchant et plus de la banque et donc vu les couts des dommages en gros c'est sa mort dans 90% des cas...

    Je suis donc plus pour les système ou tu utilises l'interface de paiement fournie par la banque partenaire et qui fait que le site ne voit jamais transité aucune infos bancaires... s'il y a un problème de hack c'est la banque qui se retrouve attaquée au civil, pénal et tribunal de commerce... mieux non?

    et du coup, ça sépare bien les métiers et responsabilités... le marchant vend, la banque se démerde avec la sécurisation des transactions...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  16. #16
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 383
    Points : 10 411
    Points
    10 411
    Par défaut
    Je suis d'accord avec ericd69 sur le fait de distribuer les tâches à chacun suivant son domaine de compétence.
    Par exemple, faire sous-traiter les transactions bancaires aux spécialistes du métier, idem pour l'administration serveur, cela ne s'improvise pas et peut engendrer de lourdes pertes en cas de défaillances.

    Concernant plus précisément les mots de passe, le sujet a été traité de nombreuses fois et le plus simple est de chercher sur le web pour se faire une idée. La liste est trop longue pour faire un résumé en quelques lignes. Les conseils de base relèvent cependant du bon sens :
    - Eviter un mot de passe court.
    - Eviter un mot de passe facile à deviner.
    - Eviter de faire transiter les mots de passe en clair sur le web.
    - Eviter d'accéder à une session administrateur depuis un lieu public ou alors il faut que la connexion soit cryptée (SSL).

    Le code de déontologie conseille que les mots de passe enregistrés ne puissent être décryptés par personne, y compris le webmestre ou l'administrateur du site, ce qui protège également en cas de piratage majeur du site.

    Pour ce faire, les mots de passe doivent être hashés et non pas cryptés car tout cryptage peut être décrypté avec la clé de décryptage qui se trouve nécessairement quelque part sur le site et donc en cas piratage majeur le pirate pourra récupérer la clé.

    Au contraire un hash est simplement une empreinte, mais n'a pas le contenu correspondant à l'empreinte et il n'existe donc pas de fonction inverse pour retrouver le contenu à partir du résultat de l'empreinte.
    Alors dans ce cas les pirates vont utiliser la force brute (tester des combinaisons dans un espace donné de caractères pour tenter de récréer cette même empreinte), ou comparer l'empreinte à une collection d'empreinte (dictionnaire). Concernant la force brute, il va sans dire que plus le mot de passe est long et composé de lettre sans signification particulière avec des caractères spéciaux inclus etc.. plus la tâche va demander du temps et s'avérer difficile voire impossible dans un temps raisonnable. On peut par ailleurs rendre caduque l'emploi de dictionnaire en concaténant un sel au mot de passe.

    Concernant la technologie de hashage il est conseillé pour augmenter la sécurité de ne plus utiliser md5 ni sha1 mais de préférence sha2 :
    the U.S. National Institute of Standards and Technology says, "Federal agencies should stop using SHA-1 for...applications that require collision resistance as soon as practical, and must use the SHA-2 family of hash functions for these applications after 2010"
    Sha2 "traduit" en php cela donne : hash("sha256",$mdp);
    Une fonction javascript correspondante ici.

    Sinon pour le cryptage, AES est un bon choix, mais pour les raisons que j'ai expliquées plus haut je réserve le cryptage à ce qui nécessite de pouvoir être décrypté, par exemple pour protéger le hash (sans sel) lors de la transmission du choix d'un mot de passe. Mais pour le stockage ou l'authentification le hashage est plus indiqué.

  17. #17
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Salam ; ABCIWEB
    La sécurité doit être pensée dès la conception de l'application
    Le code de déontologie conseille que les mots de passe enregistrés ne puissent être décryptés par personne, y compris le webmestre ou l'administrateur du site, ce qui protège également en cas de piratage majeur du site.
    c'est a dire que les mots de passe soit enregistrés codés , alors en cas ou l'utilisateur oublie son mot de passe l'administrateur ne peut intervenir du moment que le mot de passe est codé au niveau de la BDD , alors comment réactivé son compte ?
    Il est compliqué de corriger les problèmes de sécurité si elle été mal pensés dé le départ !!!!!

  18. #18
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par redoran
    c'est a dire que les mots de passe soit enregistrés codés , alors en cas ou l'utilisateur oublie son mot de passe l'administrateur ne peut intervenir du moment que le mot de passe est codé au niveau de la BDD , alors comment réactivé son compte ?
    Il est compliqué de corriger les problèmes de sécurité si elle été mal pensés dé le départ !!!!!
    C'est pourtant assez courant, et ce n'est pas un problème que le Webmestre ne sache pas les valeurs des mots de passe.

    Une des manières les plus courantes c'est de prévoir une page genre (mot_de_passe_perdu) où il sera demandé à l'utilisateur de saisir un nouveau mot de passe, puis une adresse mail (valide cela va de soit), sont nom, prénom, ou tout autres données plus ou moins confidentielles et surtout unique ...
    Puis une fois avoir vérifié l'exactitude des ces infos on lui envoie un mail de confirmation qu'un nouveau mot de passe à été créé, et qu'il peu désormais accéder à son espace perso.

    D'autres prévoient d'envoyer le nouveau mot de passe dans le mail (pas très sécurisé, m'enfin pourquoi pas).
    D'autres, à la création du compte demandent de faire un choix d'une question secrète et saisir la réponse qui se veut secrète aussi.
    Et bien lors d'une demande de nouveau mot de passe (car perdu), il suffit de lui reposer la même question et théoriquement la réponse devra être la même.
    Si la personne à aussi oublié la réponse, et bien ... va lui falloir consulter un médecin

    Bref ... c'est loin d'être mal pensé, suffit d'y penser
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  19. #19
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 383
    Points : 10 411
    Points
    10 411
    Par défaut
    Citation Envoyé par redoran Voir le message
    Salam ; ABCIWEB
    La sécurité doit être pensée dès la conception de l'application

    c'est a dire que les mots de passe soit enregistrés codés , alors en cas ou l'utilisateur oublie son mot de passe l'administrateur ne peut intervenir du moment que le mot de passe est codé au niveau de la BDD , alors comment réactivé son compte ?
    Il est compliqué de corriger les problèmes de sécurité si elle été mal pensés dé le départ !!!!!
    ça c'est l'ancienne école. On ne trouve pratiquement plus de sites avec un système de ce genre où l'ancien mot de passe est envoyé en cas de perte. Si presque tous les sites utilisent maintenant une des méthodes décrites par RunCodePhp c'est justement parce qu'ils y ont bien pensé et plutôt deux fois qu'une
    Cette évolution dans la gestion des mots de passe perdus aurait dû te mettre la puce à l'oreille

  20. #20
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Une des manières les plus courantes c'est de prévoir une page genre (mot_de_passe_perdu) où il sera demandé à l'utilisateur de saisir un nouveau mot de passe, puis une adresse mail (valide cela va de soit), sont nom, prénom, ou tout autres données plus ou moins confidentielles et surtout unique ...
    Puis une fois avoir vérifié l'exactitude des ces infos on lui envoie un mail de confirmation qu'un nouveau mot de passe à été créé, et qu'il peu désormais accéder à son espace perso.
    L'envoie d'un nouveau mot de passe par mail me semble plus sécurisé car cela nécessite un accès à la boîte mail (sécurisée par un login/mdp) pour utiliser ce nouveau mot de passe.

    Sinon, cela veux dire que si la personne (le hacker) qui tente de réinitialiser le mdp sur le site n'aura qu'à avoir les infos prétendues confidentielles et uniques....
    Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre.

    Linus Torvalds

Discussions similaires

  1. Comment Crypter un mot de passe dans un fichier .ini?
    Par Hamdi Hedhili dans le forum C++/CLI
    Réponses: 4
    Dernier message: 12/10/2010, 14h09
  2. Comment crypter un mot de passe (QString) en Sha1 ?
    Par Ðalven dans le forum Débuter
    Réponses: 4
    Dernier message: 04/01/2010, 21h47
  3. Réponses: 4
    Dernier message: 20/03/2009, 16h39
  4. Comment crypter les mots de passe avec MD5 ?
    Par Fngonka dans le forum ASP.NET
    Réponses: 19
    Dernier message: 31/07/2008, 09h48
  5. comment crypter les mots de passe?
    Par JauB dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/11/2005, 16h37

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