Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Parameter an JSP übergeben?

283 views
Skip to first unread message

Magnus Warker

unread,
Apr 8, 2011, 12:48:46 PM4/8/11
to
Hallo,

meine Login-Seite (login.jsp) ruft als Form-Action ein Login-Servlet auf:

<form id="Form" action="/myApp/login">

Bei nicht erfolgreichem Login soll dieses Servlet wieder an die Login-Seite
übergeben:

HttpServletResponse.sendRedirect ("myApp/login.jsp");

Kann man dieser JSP-Seite eine eine Fehlermeldung übergeben, so dass z. B.
unter der Login-Box "Passwort falsch" angezeigt werden kann?

Danke!
Magnus

HeinerK

unread,
Apr 8, 2011, 3:02:19 PM4/8/11
to

Ja.

1. Parameter mitgeben

HttpServletResponse.sendRedirect (
"myApp/login.jsp?errMsg=" +
URLEncoder.encode( "Passwort falsch" ) );

2. Parameter auslesen

<%= request.getParameter( "errMsg" ) %>

Eine kleine Hilfsmethode vermeidet das Ausgeben einer 'null'

/**
* Wenn der übergebene String <code>null</code> ist,
* wird ein Leerstring zurückgegeben, sonst der
* übergebene String.
*
* @param str von <code>null</code> in Leerstring
* umzuwandelnder String
* @return Leerstring oder übergebener String, wenn dieser
* nicht <code>null</code> ist
*/
public static String nullToEmptyStr(
final String str )
{
if ( str == null )
{
return "";
}
return str;
}


Also

<%= Util.nullToEmptyStr( request.getParameter( "errMsg" ) ) %>

Ich hoffe mit dem Anlegen einer Hilfsklasse und dem Import kommst Du
auch allein klar

> Magnus

Heiner

Magnus Warker

unread,
Apr 8, 2011, 3:56:02 PM4/8/11
to
Hi Heiner!

HeinerK wrote:

> 1. Parameter mitgeben
> 2. Parameter auslesen

Danke, werde ich so machen!!!

Sieht der Benutzer den Parameter dann in der URL?

Magnus

Peter Büttner

unread,
Apr 8, 2011, 4:42:40 PM4/8/11
to

_Send_Redirect: ja das sieht er (wenn er hinguckt)

Kannst du die Phisher Methode machen:
protzbank.de___________________________100_mehr___.fies.inc.com?fo=bar
die '_' evtl als irgendein unicode space?

... Spaß beiseite


Dein Server wird wohl beim ersten Kontakt des Browsers eine
Session aufmachen, halt mit unangemeldetem User. Session ist
Session. Wenn das so ist kannst du den Zustand in der Session
speichern.
BTDTGT.

Wenn du das mit den parametern machen willst kannst du
das auch kodieren:
?e=1 passwort Falsch
?e=2 user unbekannt
?e=3 ldap nicht erreichbar
?e=4 keine Lust mehr
sieht weniger auffällig aus. Oder, da man ja frei ist:
/myApp/login.jsp?a
/myApp/login.jsp?b
/myApp/login.jsp?c
alternativ Zeichen '_', ',', '.', '-' hinters ?


Oder in der url einbauen:
/myApp/#/login.jsp
# ist der code
--> eher quatsch.

Oder Servlet hört auf mehere urls:
/myApp/login_pass_wrong.jsp
/myApp/login_user_unknown.jsp
--> ist aber auch quatsch.

Peter

Peter Büttner

unread,
Apr 8, 2011, 6:04:09 PM4/8/11
to
Peter Büttner wrote:

> Magnus Warker wrote:
> > HeinerK wrote:

> > > 1. Parameter mitgeben
> > > 2. Parameter auslesen
> >
> > Danke, werde ich so machen!!!
> >
> > Sieht der Benutzer den Parameter dann in der URL?

> _Send_Redirect: ja das sieht er (wenn er hinguckt)

[...]


Ergänzung:
mein BTDTGT war anders, ich bin mir sicher das ich dem Formular
dafür <input type="hidden"> spendierte.


Peter

Magnus Warker

unread,
Apr 11, 2011, 12:23:41 AM4/11/11
to
Danke für die Hinweise!

Ich hab die Info nun in der Session gespeichert.

Magnus

Jörg Weule

unread,
Apr 14, 2011, 2:36:46 AM4/14/11
to
!!! Wenn man die Fehlermeldung aus der URL als Text auf den Bildschrim
bringt, ist das ein Tor für CrossSideScripting !!!

Warum wird nicht intern das Login-Servlet mit RequestDispatcher.forward
oder so aufgerufen, was dann den Response füllen kann? Die Meldung kann
man dann als Attribut im Request oder in der Session übergeben.

Wenn ich am Server eine HTML-Seite ausliefern möchte, sollte ich das tun
und nicht über einen Redirect des Browsers an die Stelle verzweigen. Das
kostet nur Cpu- und Latenz-Zeit und schafft neue Security-Probleme.

Jörg

0 new messages