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 :

avis sur la gestion d'une authentification


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 172
    Points : 73
    Points
    73
    Par défaut avis sur la gestion d'une authentification
    Bonsoir

    Je crée une application web dont plusieurs acteurs agissent dessus.
    C'est pour cette raison que ceci nécessite la création d'une authentification.
    pour chaque intervenant au système.

    J'ai mis en place une BDD contenant une table Personne contenant le NOM + MDP + Statut de la personne

    J'aurais aimé avoir vos point de vue sur cet authentification.

    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
                  Form d'authentification 
    
      <form action="Verif.jsp?login="<%request.getParameter("login");%>&mdp=<%request.getParameter("mdp");%>" method="post" >
        <!--<form action="Verif.jsp" method="post" >		
    		<input type="hidden" name="login"value="<%request.getParameter("login");%>" />
    		<input type="hidden" name="mdp"value="<%request.getParameter("mdp");%>" />
    	-->
    	<FIELDSET class="f1"> 
    	     <legend> Identification </legend>
    		 
    		 <label id="login">Login :</label> <input type="Text" name="login" id="login" />
    		 <label id="mdp"> Mot de Passe :</label> <input type="password" name="mdp" id="mdp" />
    		 <br> 		 
    		  <input type="reset" value="annuler" id="annuler" class="annuler" /> 
    		  <input type="submit" name="todo" value="envoyer" id="envoyer" class="envoyer" />  
    	 </FIELDSET>  	 
    		 
    	</form>
    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
                             Verif.jsp 
    
    <%@ page 
    	import = "java.io.*"
    	import = "java.lang.*"
    	import = "java.sql.*"
    	import = "convergences.*"
            import = "common.*"
    	import = "javax.servlet.*"
    	import = " javax.servlet.http.*"
    	
    	
    %>
    <jsp:useBean id="conv" scope="session" class="convergences.SQLUtils" />
    <%
            String login = ""; 
    	String mdp= "";
    	String strsql =""; 
    
    try {
    
    		if(request.getParameter("todo")!=null)
    		{
    
          		if("envoyer".equals(request.getParameter("todo")))
    	   		{
        	  		if(request.getParameter("login")!= null)
    		     		login =  request.getParameter("login");
    		  		if(request.getParameter("mdp")!= null)
    		     		mdp =  request.getParameter("mdp");
         	  
    		  		strsql = "select * from Personne where MdpPers='"+mdp+"' and NomPers='"+login+"'";
    		 	    ResultSet rs = conv.execute(strsql,"BDD"); 
    				rs.next();
    				
    				
    		  		if((mdp == rs.getString("MdpPers"))&&(login == rs.getString("NomPers")))   
    		 		{
    		    		out.println("il s'agit d'un user de la base"); 
    		  		}else{
    		         		 out.println("il ne s'agit pas d'un user de la base"); 
    		       		 }
    			 
    			}//fin envoyer 	 
    		}//fin todo	
    	 
    	}catch(Exception e)
    	      { 
    		    e.getMessage(); 
    		  }	%>
    J'ai constaté que j'ai une erreur.
    En effet la condition de test me lit le mauvais message c'est à dire lorsque j'insere les bons login et mdp j'ai le message "il ne s'agit pas d'un user de la base" qui s'affiche.
    Dans le cas contraire aucun message ne s'affiche.

    Pourriez vous me donner des pistes pour pouvoir corriger cet erreur .
    et egalement votre point de vue pour gerer une authentification. Si vous avez des améliorations à faire je suis prenneur.

    Merci
    Stardeus

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Points : 635
    Points
    635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strsql = "select * from Personne where MdpPers='"+mdp+"' and NomPers='"+login+"'";
    Injection SQL -> google

    Si tu mets le mot de passe "nimp or 1=1", tu peux te logguer avec nimporte quel login. Au passage tu peux probablement aussi créer des tables, en enlever, etc.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 172
    Points : 73
    Points
    73
    Par défaut
    Bonjour

    Je ne parviens toujours pas à faire l'authentification.
    Je ne vois pas pourquoi la requete ne fonctionne pas

    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
     
      if(request.getParameter("todo")!= null) 
         {	
    	   if("envoyer".equals(request.getParameter("todo")))
    	     {
       			//on teste si le login saisi est correct 
    			loginlu= request.getParameter("login");
    			if (loginlu.length()==0)
    			response.sendRedirect("authentifier.jsp?notvalid=1"); 
                //mettre les logins en minuscule 
    		    loginlu=loginlu.toLowerCase();	
     
    			// on teste si le mot de passe saisi est correct
    			mdplu=request.getParameter("mdp");
    			if (mdplu.length()==0)
    				response.sendRedirect("authentifier.jsp?notvalid=2");
     
    	    	strsql="select * from personne where NomPers ='" + loginlu + "' and MdpPers='"+ mdplu +"'" ;
    			out.println(strsql); 
    			rs=conv.execute(strsql,"BDD");
    			rs.close();
     
               if((loginlu == rs.getString("NomPers"))&&(mdplu == rs.getString("MdpPers")))
    		    {
    			     out.println("test");
    			    response.sendRedirect("Menu.jsp");
    				//HttpSession session = request.getSession(true);
    				//session.setAttribute("identifiedUser",user);
    			}else {
    			          out.println("test33");
    			   		  response.sendRedirect("authentifier.jsp");
    				   } 
    	      }//fin envoyer 		  	
           }//fin todo
    Pourriez vous me dire ce qui ne va pas ?
    merci

    Stardeus

  4. #4
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    Un classique :
    pour compararer des chaine de caratere il ne faut pas utiliser == mais equals()

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 172
    Points : 73
    Points
    73
    Par défaut
    Effectivement c'etait bien le equals.
    Le equals te permet de comparer 2 objets differents et savoir si si ces objets pointent sur la même référence ou est ce qu'on compare le contenu de 2 objets ( c'est a dire 2 objet differents qui pointent sur 2 reference differentes mais contenant le meme contenu =>on utilisera egalement un equals)

    J'aurais une autre question lorsque je fais mon test.
    dans le cas ou je renseigne es bonnes valeurs alors la redirection se fait correctement
    dans le cas contraire on m'affiche rien.

    voici ce que j'ai fait:
    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
     
     
    strsql="select NomPers, MdpPers from personne where NomPers ='" + loginlu.replaceAll("'","''") + "' and MdpPers='"+ mdplu.replaceAll("'","''") +"'" ;
    			//out.println(strsql); 
    			rs=conv.execute(strsql,"BDD");
    			rs.next();
     
     
    		   String nomPers = rs.getString("NomPers"); 
    		   out.println(nomPers);
    		   String mdpPers = rs.getString("MdpPers"); 
    		   out.println(mdpPers);
               if((loginlu.equals(nomPers))&&(mdplu.equals(mdpPers)))
    		    {
    			     out.println("vous etes connecter au nom" + nomPers );
    			     response.sendRedirect("Menu.jsp");
    				 //HttpSession session = request.getSession(true);
    				 //session.setAttribute("identifiedUser",user);
    			}else{
    					 	response.sendRedirect("authentifier.jsp");
    			     }

  6. #6
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    C'est peut-être qu'il ne trouve pas la jsp ? problème de case ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 172
    Points : 73
    Points
    73
    Par défaut
    Apparement quelque soit la page qui est redigéré , ceci affiche un page blanche que lorsque les données renseignée ne correspondent pas à la BDD.



    J'ai réalisé quelque tests dont une consistait à faire des condition les unes à la suites des autres ou encore spécifier la condition pour lequel le cas doit se redigerer vers la page d'authenfication

    Mais ceci ne fonctionne pas et me renvoie dans n'importe quel cas vers une page vierge.

    Auriez vous une idée?

    Stardeus

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 172
    Points : 73
    Points
    73
    Par défaut
    Bonjour

    Je ne parviens pas à mener à bien l'authentification.
    voici ce que j'ai fait :

    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
     
    if(request.getParameter("todo")!= null) 
         {	
    	   if("envoyer".equals(request.getParameter("todo")))
    	     {
       			//on teste si le login saisi est correct 
    			loginlu= request.getParameter("login");
    			if (loginlu.length()==0){ response.sendRedirect("authentifier.jsp?notvalid=1");}
                //mettre les logins en minuscule 
    		    loginlu=loginlu.toLowerCase();	
     
    			// on teste si le mot de passe saisi est correct
    			mdplu=request.getParameter("mdp");
    			if (mdplu.length()==0){	response.sendRedirect("authentifier.jsp?notvalid=2");}
     
    	    	strsql="select NomPers, MdpPers from personne where NomPers ='" + loginlu.replaceAll("'","''") + "' and MdpPers='"+ mdplu.replaceAll("'","''") +"'" ;
    			rs=conv.execute(strsql,"BDD");
    			rs.next();
     
    		    String nomPers = rs.getString("NomPers");
    		    String mdpPers = rs.getString("MdpPers");
     
    		   	while((loginlu.equals(nomPers))&&(mdplu.equals(mdpPers)))
    		   	{
    			  response.sendRedirect("Menu.jsp?id="+nomPers);
    			  break; 
    		   	}
     
    			if((nomPers != loginlu)&&(mdpPers != mdplu))
    			{
    			  response.sendRedirect("authentifier.jsp"); 
    			} 
     
    		   rs.close();
     
    	      }//fin envoyer
           }//fin todo

    Je n'arrive pas à comprendre pourquoi lorsqu'on saisit des informations fausses la page me redirige vers une page blanche.

    ( je suppose qu'il y a des erreurs mais dont je ne sais pas comment afficher les erreur de la page Savez vous comment on le fait??
    Je pensais qu'avec une exception du type.
    Try{ } catch(Exception e ) { e.getMessage(); } , on pourrait connaitre le contenu des erreurs. Seul une page blanche apparait.
    )

    en revanche lorsqu'on insere les valeurs correspondant à la page. On redirige vers la bonne page.


    Stardeus

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/06/2007, 20h58
  2. Avis sur la structure d'une base de données
    Par ange_dragon dans le forum Modélisation
    Réponses: 2
    Dernier message: 29/05/2007, 15h45
  3. Conseil ou avis sur la gestion des statistics
    Par lenitoy dans le forum Sybase
    Réponses: 3
    Dernier message: 28/03/2007, 12h07
  4. [MCD]Avis sur la représentation d'une composition
    Par habasque dans le forum Schéma
    Réponses: 10
    Dernier message: 06/01/2007, 20h11
  5. demande d'avis sur l'utilisation d'une date
    Par mrkinfo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/07/2006, 19h50

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