L'authentification de l'utilisateur, mot de passe à l'aide de filtres en Java (en contact avec la base de données)
Voici le morceau de code Java à l'aide de filtres qui affiche la page d'erreur à chaque fois, si le nom d'utilisateur et le mot de passe est également correcte. S'il vous plaît aidez-moi, je n'ai pas beaucoup de connaissance sur ce concept.
String sql="select * from reg where username='"+user+"' and pass='"+pwd+"'";
rs=st.executeQuery(sql);
if(rs.next())
{
chain.doFilter(request,response);
}
else
sc.getRequestDispatcher("/error.html").forward(request,response);
Comment sur l'utilisation de Ressort de Sécurité? Les petites et nettoyer...
Et comment sur l'utilisation de ING police d'assurance? Vous devriez penser avant de suggérer anthing. Si quelqu'un n'est même pas l'emploi d'un cadre, le Printemps est loin, comment pouvez-vous suggérer de Printemps de Sécurité. Je veux dire allez. N'en déplaise prévu.
Et comment sur l'utilisation de ING police d'assurance? Vous devriez penser avant de suggérer anthing. Si quelqu'un n'est même pas l'emploi d'un cadre, le Printemps est loin, comment pouvez-vous suggérer de Printemps de Sécurité. Je veux dire allez. N'en déplaise prévu.
OriginalL'auteur Ramu4u | 2009-12-22
Vous devez vous connecter pour publier un commentaire.
C'est une très mauvaise pratique. Cette approche requiert un nom d'utilisateur et mot de passe transmis autour de la plaine de la vanille par le biais de demandes. En outre, vous avez là une attaque par injection SQL trou.
Faire usage de séances, en JSP/Servlet là, vous avez la
HttpSession
pour. Il est vraiment aussi, pas besoin de frapper la DB, encore et encore, à chaque requête à l'aide d'unFilter
. C'est inutilement coûteux. Vient de mettreUser
en session à l'aide d'unServlet
et l'utilisation de laFilter
pour vérifier sa présence sur chaque demande.Commencer avec un
/login.jsp
:Ensuite, créez un
LoginServlet
qui est mappé sururl-pattern
de/login
et a ladoPost()
mis en œuvre comme suit:Ensuite, créez un
LoginFilter
qui est mappé sururl-pattern
de/secured/*
(vous pouvez choisir votre propre, cependant, par exemple,/protected/*
,/restricted/*
,/users/*
, etc, mais il doit au moins couvrir toutes les pages protégés, vous devez également mettre de la JSP dans le dossier approprié dans WebContent) et a ladoFilter()
mis en œuvre comme suit:Qui devrait être. Espérons que cette aide.
À avoir l'idée de la façon dont un
UserDAO
pourrait ressembler, vous pouvez trouver cet article utile. Il couvre également comment utiliserPreparedStatement
pour enregistrer votre webapp d'attaques par injection SQL.Voir aussi:
OriginalL'auteur BalusC
Utilisation d'une requête préparée, votre code est une invitation ouverte pour une L'injection SQL.
Maintenant à votre question, veuillez consulter:
OriginalL'auteur Jerome
Beaucoup de choses de mal avec cela... :-/
select * from reg
est pas nécessaire étant donné que vous voulez juste pour savoir si une ligne existe. Si vous avez utiliséselect 1
au lieu de la base de données n'a pas à vérifier le contenu de la ligne et pourrait servir les résultats de la requête à partir de seulement l'index. Si vous attendions à beaucoup de lignes,select 1 where exists ...
serait plus rapide de permettre à la DB pour un court-circuit de la requête après la découverte d'au moins une ligne.finally
blocs. Cela signifie qu'ils ne sont pas forcément toujours être éliminés (par exemple, si il y a unSQLException
jeté) conduisant à une ressource de connexion et de fuites.OriginalL'auteur Andrzej Doyle
Tout d'abord, vous devriez vraiment utiliser des requêtes paramétrées pour cela. Si l'utilisateur entre
'";DROP TABLE reg;
en tant que nom d'utilisateur, vous serez en grande difficulté.Aussi, êtes-vous sûr que le nom d'utilisateur et mot de passe sont corrects? Comment au sujet de capitalisation?
OriginalL'auteur Thomas Lötzer