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

Servlets/JSP Java Discussion :

Sécuriser un LOGIN par SHA-1


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Par défaut Sécuriser un LOGIN par SHA-1
    j'ai un servlet qui gère la connexion à un formulaire afin de pouvoir le modifier, les mots de passe sont chiffrés en SHA-1, alors quand je veux me connecter avec mon mot de passe toujours il me renvoi le message que j'ai préparé en cas de faute de mot de passe, voici le code du login

    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
     
    @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            try {
                //HttpSession session = request.getSession();
                bac = request.getParameter("logBac");    //je reçois ici le numéro de bac qui est l'utilisateur 
                pwd = request.getParameter("logPass");  //là je reçois le mot de passe entré
                String encryptPass = encrypt(pwd).toString(); // je chiffre mon mot de passe par la même fonction de chiffrement lors d'inscription
     
                String query = "SELECT * FROM compte WHERE bac=? AND password=?";
                System.out.println(query);
                try {
                    stat = cnx.prepareStatement(query);
                    stat.setString(1, bac);               //j'envoi le user à la requête
                    stat.setString(2, encryptPass);    //j'envoi le mot de passe chiffré afin qu'il le compare
     
    rslt = stat.executeQuery();
                    if(rslt.next()){
                        //j'envoi les données à mes objets ce code fonctionne bien si je teste sans chiffrement des mots de passe
                        c.setNum_compte(rslt.getInt("num_compte")); 
                        c.setBac(rslt.getString("bac"));
                        e.setBac(rslt.getString("bac"));
                        c.setPassword(rslt.getString("password"));
     
                        Etudiant();
                        Fils();
                        Parents();
     
                        request.getSession().setAttribute("compte", c);
                        request.getSession().setAttribute("bachelier", e);
                        request.getSession().setAttribute("pere", pere);
                        request.getSession().setAttribute("mere", mere);
                        RequestDispatcher disp = request.getRequestDispatcher("edition.jsp");
                        disp.forward(request, response);
                    }else{
                        processRequest(request, response);
                    }
                } catch (SQLException ex) {
                    Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
                }
            } catch (Exception ex) {
                Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
            }   
        }
    voici la méthode de chiffrement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public static byte[] encrypt(String x) throws Exception {
            java.security.MessageDigest d = null;
            d = java.security.MessageDigest.getInstance("SHA-1");
            d.reset();
            d.update(x.getBytes());
            return d.digest();
        }

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Désolé je n'ai pas compris la question ?

    Petite remarque, je pinaille, mais SHA-1 n'est pas recommandé pour les mots de passe. On trouve facilement des tables de mots de passes sur Internet.

    https://paragonie.com/blog/2016/02/h...ssword-in-2016

    https://crackstation.net/hashing-security.htm

  3. #3
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    C'est la manière dont tu transformes le tableau d'octets resultant de la méthode encrypt qui n'est pas bonne.
    Si tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    encrypt(pwd).toString()
    , tu obtiens une représentation en String de ton objet tableau de byte, c'est à dire son adresse mémoire Donc pas la même chose à l'enregistrement et par la suite ...

    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    encrypt(pwd).toString()
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new String(encrypt(pwd))

  4. #4
    Membre éclairé Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Par défaut
    Citation Envoyé par chtig Voir le message
    C'est la manière dont tu transformes le tableau d'octets resultant de la méthode encrypt qui n'est pas bonne.
    Si tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    encrypt(pwd).toString()
    , tu obtiens une représentation en String de ton objet tableau de byte, c'est à dire son adresse mémoire Donc pas la même chose à l'enregistrement et par la suite ...

    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    encrypt(pwd).toString()
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new String(encrypt(pwd))
    effectivement ça a bien fonctionné, merci

  5. #5
    Membre éclairé Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Désolé je n'ai pas compris la question ?

    Petite remarque, je pinaille, mais SHA-1 n'est pas recommandé pour les mots de passe. On trouve facilement des tables de mots de passes sur Internet.

    https://paragonie.com/blog/2016/02/h...ssword-in-2016

    https://crackstation.net/hashing-security.htm
    merci fr1man pour l'information mais c'est pas pour du réel c'est pour mon projet de fin d'étude et j'avais SHA-1 comme cours en cryptographie.

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

Discussions similaires

  1. [AXIS2] Sécuriser mon webservice par login/mdp
    Par ericw78 dans le forum Services Web
    Réponses: 0
    Dernier message: 20/12/2008, 17h47
  2. Réponses: 9
    Dernier message: 10/07/2008, 10h33
  3. sécuriser un formulaire par une équation
    Par aboura86 dans le forum Langage
    Réponses: 8
    Dernier message: 03/07/2008, 18h03
  4. Réponses: 1
    Dernier message: 03/01/2006, 11h07

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