JSF JSF2 Validierung Sicherheit

smotron

Mitglied
Hallo, hätte da mal eine kurze Frage, nur um sicher zu gehen.
Ist die Verwendung der JSR Bean Validierung unter JSF2 ausreichend sicher, so dass auch garantiert keine falschen Werte in die Business Logic kommen können (ergo: passiert die Validierung client oder serverseitig?) oder ist die Validierung eher nur als Bequemlichkeit für den User gedacht, sodass die Werte serverseitig nochmal extra validiert werden müssen bevor sie in die Business Logic kommen?

Wäre es bei der Pages Validierung anders oder kommt das auf das selbe?

Lg
 
N

nillehammer

Gast
Die Validierung passiert Serverseitig. Je nach Framework, wird auch JavaScript-Code generiert, der Clientseitig validiert. Bei richtiger Verwendung ist die Validierung ausreichend sicher.
 

smotron

Mitglied
Ok, danke sehr. Mich irritiert dann nur noch folgendes, aus diesem Tutorial:
JSF 2.0 Tutorial (JavaServer Faces 2 Tutorial)

Validation in action controller
– When validation linked to business logic

bzw. For when validation is closely tied to yourbusiness logic

Damit kann ich dann nichts anfagen. Wozu dann die manuelle Validierung im Actioncontroller, wenn die Validierung sowieso serverseitig geschieht, also auch mit den Annotations? Oder kommen die Annotations auf das selbe wie die manuelle Validierung hier? Wieso wurde dann in dem Tutorial nicht auf die Annotations verwiesen?
 
N

nillehammer

Gast
Sorry, aber auf der von Dir verlinkten Seite ist zwar das richtige Kapitel aufgeklappt, aber die von Dir zitierte Passage kann ich nicht finden. Darum nochmal einen Schritt zurück.

Mit den Validierungsannotationen sorgst Du erstmal dafür, dass überhaupt Regeln definiert sind, nach denen Deine Instanzen validiert werden können. Die Validierung muss aber noch über die entspr. Methoden des Bean Validation API getriggert werden. Normalerweise machen das die Frameworks zum jeweils geeigneten Zeitpunkt selbst. Hibernate triggert die Validierung z.B. immer vorm Persist. Das JSF-Framework sollte die Validierung beim Empfang der geposteten Formulardaten machen. Das wäre dann Serverseitig. Darüber hinaus kann es anhand der Annotationen auf dem Beans ja auch JavaScript generieren, das die enstpr. Formularfelder überwacht und Clientseitig validiert. Das mach man, um unnötige Posts an den Server zu vermeiden.

Vielleicht denke ich aber auch schon zu sehr in Frameworks und Du machst mit dem Tutorial noch alles von Hand?
 

smotron

Mitglied
Das Tutorial ist hinter dem Link wiederum verlinkt, sorry, hätte ich sohl gleich direkt machen sollen:
http://courses.coreservlets.com/Course-Materials/pdf/jsf/jsf2/JSF2-Validation.pdf

Das von Hand machen möchte ich ja eigentlich vermeiden und hätte deshalb auf die JSF303 Bean Validation (mit den Annotations) zurück gegriffen und eben hier hat mich das Tutorial verwirrt, da es doch sehr aktuell ist, aber die Annotations nicht mal erwähnt.

Wenn nur clientseitig valiedert werden würde gäbe es ja das Problem, dass der User die Validierung umgehen könnte und somit unvalidierte Daten in die Business Logic gelangen könnten. Aber wie du schon sagtest wird hier eh serverseitig validiert, wodurch es das Problem eh nicht geben sollte.

Was mir eigentlich wichtig ist, ist die Frage, ob es irgend einen (vor allem sicherheitstechnischen) Zweck hat, zusätzlich zu der Annotations Validierung eine manuelle auch noch durchzuführen bevor es an die Business Logic geht, aber das ist jetzt dann eigentlich eh geklärt: sollte keinen Sinn machen. Eine manuelle Validierung (statt den Annotations) wäre nur in dem Fall nötig/sinnvoll, wenn ich eine bestimmte Validierung nicht mit den Annotations abdecken könnte, richtig?

Und dann wäre noch eine Frage die rein interessenshalber übrig bleibt:
Wenn ich die validierung in den Pages statt in den Beans mache (z.B. f:validateLength), geschieht dies dann auch serverseitig?
 
Zuletzt bearbeitet:
N

nillehammer

Gast
sollte keinen Sinn machen. Eine manuelle Validierung (statt den Annotations) wäre nur in dem Fall nötig/sinnvoll, wenn ich eine bestimmte Validierung nicht mit den Annotations abdecken könnte, richtig?
Stimmt, man kann eben nicht alle Validierungen mit (Standard-)Annotations ausdrücken. Z.B. Wenn User ein Stammkunde, dann erhöhter Maximalbestellwert oder sowas. Aber selbst dafür kann man sich eigende Validatoren und Annotations schreiben. Das würde ich auch so machen, damit Du keine Lücken hast. Also Validierung selbst ausprogrammieren, aber so einbinden, dass das Triggern automatisch geht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Namen von URL-Parametern austauschen bei JSF2 Web Tier 2
S JSF JSF2 application in der Entwicklungsumgebung neustarten Web Tier 4
J JSF2+primefaces? Web Tier 20
G JSF JSF2 und JAAS Web Tier 8
J JSF JSF2.0 template wird nicht gerendert!? Web Tier 2
S JSF2: Managed bean aus anderer Dependency Web Tier 7
T SVG für JSF2 Web Tier 8
R UIGraphic jsf2.0 Web Tier 2
T <f:ajax> in JSF2.0 Komponente ein- und ausblenden Web Tier 4
T JSF2 Authentifizierung Web Tier 3
C Eclipse mit JSF2.0 Web Tier 7
S [JSF] CommandButton/Link ohne Validierung Web Tier 3
M [JSF] Input-highlighting bei fehlgeschlagener Validierung Web Tier 4
S JSF Validierung unter Einbeziehung mehrerer Eingabefelder/Eingabeelemente Web Tier 1
M a4j:support mit 2 selectOneMenus klappt nicht - Validierung Web Tier 3
A Einfaches Filter-Servlet für Benutzer-Validierung Web Tier 3
F RichFaces: JSF-Lifecycle / Validierung Web Tier 2
H JSF-DebugOption Validierung? Web Tier 3
U Problem bei Validierung mit Struts 2 Web Tier 1
G JSF Validierung eigene Meldungen Web Tier 4
G Validierung mit Java Server Faces Web Tier 4
S Struts: Validierung mit mask Web Tier 2
X JSF - Auf was muss in Bezug auf Sicherheit geachtet werden?? Web Tier 7
E Website mittels Programm auf Sicherheit prüfen? Web Tier 2
T JSP Session Login - Sicherheit Web Tier 4
J Servlet Sicherheit Web Tier 4

Ähnliche Java Themen

Neue Themen


Oben