Die Authentifizierung den Benutzernamen, das Passwort durch die Benutzung von filtern in Java (Kontaktaufnahme mit Datenbank)
Folgende ist ein Stück Java-code durch die Verwendung von filtern, die zeigt, dass die Fehler-Seite jedes mal, wenn der Benutzername und das Passwort ist auch richtig. Bitte helfen Sie mir, ich habe nicht viel wissen auf diesem Konzept.
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);
- Wie über die Verwendung von Spring Security? Klein und sauber...
- Und wie über die Verwendung der ING-Versicherung? Sollten Sie denken, bevor Sie darauf hindeutet, anthing. Wenn jemand nicht auch mit einem Rahmen, der Frühling ist weit Weg, wie kann Sie nur empfehlen, Spring Security. Ich meine, C ' Mon. Nichts für ungut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist eine sehr schlechte Praxis. Dieser Ansatz erfordert, dass der Benutzername und das Passwort weitergegeben werden, um plain-vanilla-durch Anfragen. Darüber hinaus haben Sie dort eine SQL-injection-Angriff Loch.
Nutzen Sitzungen, in JSP/Servlet dort haben Sie die
HttpSession
für. Gibt es eigentlich auch keine Notwendigkeit, Sie zu schlagen, die DB immer wieder auf jede Anfrage mit einemFilter
. Das ist unnötig teuer. Setzen Sie einfachUser
in der Sitzung mit einemServlet
und verwenden Sie dieFilter
zu überprüfen, die Anwesenheit auf jede Anfrage.Beginnen Sie mit einem
/login.jsp
:Erstellen Sie dann eine
LoginServlet
was ist abgebildet aufurl-pattern
von/login
und hat diedoPost()
wie folgt implementiert:Erstellen Sie dann eine
LoginFilter
was ist abgebildet aufurl-pattern
von/secured/*
(Sie können wählen, Ihre eigene jedoch, z.B./protected/*
,/restricted/*
,/users/*
usw., aber diese müssen mindestens umfassen alle gesicherten Seiten, die Sie auch brauchen, um die JSP ' s in den entsprechenden Ordner WebContent) - und hat diedoFilter()
wie folgt implementiert:Dass sollte es sein. Hoffe, das hilft.
Auf die Idee kommen, wie ein
UserDAO
Aussehen würde, können Sie feststellen dieser Artikel nützlich. Es umfasst auch, wie zu verwendenPreparedStatement
zum speichern Ihrer webapp von SQL-injection-Angriffe.Siehe auch:
Verwenden Sie eine vorbereitete Anweisung im code ist eine offene Einladung für eine SQL-injection.
Nun für Ihre Frage, überprüfen Sie bitte:
So viele Dinge falsch mit diesem... :-/
select * from reg
unnötig ist gegeben, dass Sie wollen einfach nur wissen, ob eine Zeile vorhanden ist. Wenn Sieselect 1
statt die Datenbank nicht haben, zu überprüfen Sie den Inhalt der Zeile und dienen könnte, die Ergebnisse der Abfrage aus nur die index. Wenn Sie erwarten, dass es zu viele Zeilen,select 1 where exists ...
wäre schneller als dieses würde es ermöglichen, die DB zu Kurzschluss, die Abfrage nach der Suche nach mindestens einer Zeile.finally
Blöcke. Das bedeutet, Sie sind garantiert nicht immer entsorgt werden (z.B. wenn es eineSQLException
geworfen), was zu einem Ressourcen-und undichte Verbindung.Erste von allen, sollten Sie wirklich verwenden Sie parametrisierte Abfragen für diese. Wenn der Benutzer
'";DROP TABLE reg;
als Benutzernamen ein, den Sie werden in großen Schwierigkeiten sein.Auch, sind Sie sicher, dass der Benutzername und das Passwort korrekt sind? Wie über die Großschreibung?