PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Formulardaten auswerten!


Cordell
16.09.2006, 16:37
Hi,

ich habe versucht eine Benutzerauthentifizierung zu machen!

Hier mal mein code der Dateien

html><head>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-15">

<title>JSP</title></head>
<body>
<p>Bitte einloggen</p><br>
<form name="Eingabe" action="check.jsp" method="post">
<input type="text" name="Benutzer" size="20"><br>
<input type="text" name="pass" size="20"><br><br>
<input type="submit" value="Login">
<input type="reset" value="Reset">
</form>
</body></html>

Hiermit lese ich Benutzername und Passwort ein. Diese Daten, will
ich dann in einer JSP-Datei checken


<html><head>
<meta http-equiv="Content-Type" content="text/html;
charset-iso-8859-15">

</head><body>
<%
String benutzerName=request.getParameter("benutzer");
String pw=request.getParameter("pass");
if(benutzerName.equals("superman")){
if(pw.equals("badman")){
out.println("<br><br><h4>Angaben korrekt!</h4>");
out.println("<p>Klicken Sie hier zum Zugang:</p>");
out.println("<a href='test.html'>Geschützter Bereich</a>");
}
else{
out.println("Benutzername okay, Passwort nicht okay!<br><br>");
out.println("<a href='start.html'>Nochmal...</a>");
}
}
else{
out.println("Benutzername nicht okay!<br><br>");
out.println("<a href='start.html'>Nochmal...</a>");
}

%>

</body></html>

Wenn ich die start.html aufrufe, kann ich Benutzername und Passwort eingeben. Wenn ich aber nun auf "Login" klicke, bekomme ich folgende
Fehlermeldungen:

HTTP Status 500 -

type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:367)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:294)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
root cause
java.lang.NullPointerException
org.apache.jsp.check_jsp._jspService(check_jsp.java:48)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:320)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:294)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
note The full stack trace of the root cause is available in the Tomcat logs.


Ich weiß im Moment nicht weiter. Sehe nicht, was ich falsch gemacht habe!

Wäre wirklich super, wenn mir jemand helfen könnte!

MfG
Cordell


eViL_oNe
16.09.2006, 19:52
1. Fehler:

String benutzerName=request.getParameter("benutzer");

da der Parameter in Wirklichkeit "Benutzer" heisst, gibt die Methode null zurück

2. Fehler

if Abfragen auf die Gleichheit von Referenztypen sollten auch die Prüfung auf null enthalten:

if ( benutzerName != null && benutzerName.equals( "superman" ) )
....

3. Du hast ein zu geschwätziges System programmiert. Es hat schon seinen Grund, warum die meisten Passwortabfragen dem Benutzer den gleichen Fehler beim ungültigen Namen und Passwort signalisieren -- damit bietet man Brute-Force-Attacken eine kleinere Angriffsfläche

4. anstatt von out.println würde ich bei einer JSP-Seite mit eingebettetem HTML-Code arbeiten:

if ( foo )
{
%>
<b>Das ist nur ein Test</b>
<%
}

sieht vielleicht etwas merkwürdig aus, ist aber imho auf jedenfall der Variante mit out.println vorzuziehen ;)

Cordell
17.09.2006, 03:07
Ja dankeschön!!

Allein, die Behebung meines dummen Fehlers, die Variable klein zuschreiben
war ausreichend, dass jetz alles funktioniert!
Deine Anderen Anmerkungen werde ich in Zukunft beherzigen! :)

Danke nochmal,

Cordell

DarkTom
17.09.2006, 14:09
if ( benutzerName != null && benutzerName.equals( "superman" ) )Ich nutze mal die Gelegenheit, die kürzere und schönere Variante zu erwähnen:

if ("superman".equals(benutzerName))