security jsf csrf jsf-2.2 protected-views

security - ¿Se debe usar<protected-views> para la protección JSF 2.2 CSRF?



jsf-2.2 (1)

Estoy confundido. Veo que JSF 2.0 tiene protección CSRF implícita: cómo JSF 2.0 previene CSRF

Por otro lado, de acuerdo con el artículo http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JSF-CSRF-Demo/JSF2.2CsrfDemo.html , deberíamos agregar el siguiente elemento a faces-config.xml archivo faces-config.xml con la lista de páginas JSF.

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

¿Se debe usar <protected-views> para la protección JSF 2.2 CSRF?


Estoy confundido. Veo que JSF 2.0 tiene protección CSRF implícita: cómo JSF 2.0 previene CSRF

Esta protección implícita solo se aplica a solicitudes POST (es decir, páginas con <h:form> ).

Por otro lado, de acuerdo con el artículo http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JSF-CSRF-Demo/JSF2.2CsrfDemo.html , deberíamos agregar el siguiente elemento a faces-config.xml archivo faces-config.xml con la lista de páginas JSF.

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

Esta protección también será efectiva en las solicitudes GET (es decir, páginas con <f:viewAction> , que también es nuevo desde JSF 2.2). Siempre que use <h:link> o <h:button> para crear enlaces / botones GET en esas páginas, se javax.faces.Token un nuevo parámetro de solicitud GET javax.faces.Token con un valor de token autogenerado a la URL en el HTML generado. salida y este parámetro sería necesario cuando la página en cuestión se declara en <protected-views> .

¿Se debe usar <protected-views> para la protección JSF 2.2 CSRF?

Solo en páginas con <f:viewAction> que le gustaría proteger con CSRF. Aquellos con <h:form> ya están protegidos implícitamente por javax.faces.ViewState campo de entrada oculto, siempre que no haya desactivado el estado de vista JSF por <f:view transient="true"> . Consulte también la prevención de ataques de inyección CSRF, XSS y SQL en JSF .