2012-02-15 24 views
17

Por el momento estoy buscando la posibilidad de incluir tokens de CRSF en los formularios Spring MVC y Spring Security. ¿Cuál es la solución más fácil que cubre ambos servlets (Spring Security + Spring MVC) y permite representar y evaluar tokens CSRF?Spring 3.1 MVC, Spring Security 3.1 - CSRF token

Me sorprende que este mecanismo básico no esté disponible en la pila Springs. (que considero básico para cada marco de aplicación web)

PD: He mirado a HDIV pero no puedo encontrar una solución para usarlo también con Spring Security. (por ejemplo, el formulario de inicio de sesión se procesa con Spring MVC y la solicitud de inicio de sesión es manejada por Spring Security)

+0

Tiene usted razón, la primavera no tiene ese apoyo. Pero, ¿cuál es la pregunta? – Ralph

+0

Ok. Un signo de interrogación había estado perdido. Lo siento. ¿Hay una biblioteca que cubra Spring Security + Spring MVC con protección CSRF? ¿O es suficiente para cubrir Spring MVC ya que CSRF solo es dañino mientras el usuario está autenticado? –

Respuesta

23

Primavera 3.1 introdujo una nueva interfaz llamada RequestDataValueProcessor. Usando esta interfaz puede fácilmente (y automáticamente - ¡sin ningún cambio en su JSP o controladores!) Registrar tokens CSRF en formularios HTTP. Puede ver un ejemplo detallado en here, también se refiere al código de muestra en github (para que pueda tomarlo desde allí y usarlo en su aplicación).

8

ACTUALIZACIÓN (enero de 2014): Spring Security 3.2 contiene una implementación de CSRF-Token.


para la primavera de Seguridad < = 3.1:

Debido CSRF ha señalando que ver con la primavera Secruity (Autenticación & autorización) tanto pueden implementarse por separado el uno del otro.

Existen algunas implementaciones de CRSF basadas en filtros. Por ejemplo hay uno incluido con Tomcat 7, y Tomcat 6.0.algo

Cuando probé a usarlos (en el verano de 2011) no tengo la sensación de que funcione bien. Así que implementé el mío.

EDITAR (abril de 2012): Mi Implementación trabaja con Spring 3.0, si está utilizando Primavera 3.1, a continuación, echar un vistazo a Eyal Lupu's answer y su Blog que utiliza algunos de Primavera 3.1 características para el manejo del filtro es más fácil.

No lo he hecho público hasta ahora (no hay tiempo). Pero lo harás. Puede descargarlo (esta es la primera vez que utilizo 4shared.com, espero que funcione):

El inconveniente de mi aplicación es, que necesita para agregar el token explícito a cada formulario que envíe POST, DELETE, PUT.

JSP (x):

xmlns:crsf="http://www.humanfork.de/tags/de/humanfork/security/crsf" 
... 
<form ...> 
    <crsf:hiddenCrsfNonce/> 
    .... 
</form> 

Web.xml

<filter> 
    <filter-name>IdempotentCrsfPreventionFilter</filter-name> 
    <filter-class>de.humanfork.security.crsf.IdempotentCsrfPreventionFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>IdempotentCrsfPreventionFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
+0

Muchas gracias. –

+2

Tenga en cuenta que en Spring 3.1 agregamos una interfaz llamada RequestDataValueProcessor. Puede implementarlo y configurarlo en el contexto de la aplicación para actualizar cada formulario asumiendo el uso de las etiquetas de formulario JSP Spring. Hicimos esto para facilitar que la biblioteca HDIV se integre con Spring MVC, pero puede ser utilizada por cualquier persona, por supuesto. –

Cuestiones relacionadas