2014-11-17 9 views
8

Sono confuso. Vedo che JSF 2.0 ha implicita protezione CSRF: How JSF 2.0 prevents CSRFÈ necessario utilizzare <viste protette> per la protezione CSRF JSF 2.2?

D'altra parte, secondo l'articolo http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JSF-CSRF-Demo/JSF2.2CsrfDemo.html dobbiamo aggiungere il seguente elemento al file faces-config.xml con l'elenco delle pagine JSF.

<protected-views> 
    <url-pattern>/csrf_protected_page.xhtml</url-pattern> 
</protected-views> 

caso <protected-views> essere utilizzati per JSF 2.2 la protezione CSRF?

risposta

12

Sono confuso. Vedo che JSF 2.0 è dotato di protezione implicita CSRF: How JSF 2.0 prevents CSRF

Questa protezione implicita è solo su richieste POST (pagine ossia con <h:form>).


D'altra parte, secondo l'articolo http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JSF-CSRF-Demo/JSF2.2CsrfDemo.html dobbiamo aggiungere il seguente elemento al file faces-config.xml con l'elenco delle pagine JSF.

<protected-views> 
    <url-pattern>/csrf_protected_page.xhtml</url-pattern> 
</protected-views> 

Questa protezione sarà anche efficace su richieste GET (pagine ossia con <f:viewAction>, che è anche novità dal JSF 2.2). Ogni volta che si utilizza <h:link> o <h:button> per creare collegamenti/pulsanti GET su tali pagine, un nuovo parametro di richiesta GET javax.faces.Token con un valore di token generato automaticamente verrà aggiunto all'URL nell'output HTML generato e questo parametro sarà richiesto quando la pagina in questione è dichiarato in <protected-views>.


caso <protected-views> essere utilizzati per JSF 2.2 la protezione CSRF?

Solo su pagine con <f:viewAction> che vorresti CSRF-protezione. Quelle con <h:form> sono già protette implicitamente dal campo di input nascosto javax.faces.ViewState, a condizione che non sia stato disattivato lo stato di visualizzazione JSF di <f:view transient="true">. Vedi anche a.o. CSRF, XSS and SQL Injection attack prevention in JSF.

+0

Quando/perché le pagine con '' devono essere protette (su richieste GET) contro CSRF? – Tiny

+2

@Tiny: Anche me lo chiedo. Le richieste GET sono idempotenti per definizione. Vedi anche a.o. https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet#Disclosure_of_Token_in_URL – BalusC

Problemi correlati