java - traducir - Prevención de falsificación de solicitudes en sitios cruzados utilizando token de puntales
traducir de ingles a español (1)
Los métodos de token de acción de Struts 1 funcionan como el interceptor de token de Struts 2 porque agregará un token a su sesión y lo verificará en el envío del formulario, pero es un proceso mucho más manual. El flujo de trabajo básico es:
- El usuario accede al formulario a través de una Acción de Struts (no directamente a la JSP). La Acción de Struts llamará a
saveToken(request)
antes de reenviar a la JSP que contiene el formulario. - El formulario en el JSP debe usar la etiqueta
<html:form>
. - La acción a la que se envía el formulario llamará primero a
isTokenValid(request, true)
, y debe redirigir de nuevo a la primera acción con un mensaje de error si devuelvefalse
. Esto también restablece el token para la siguiente solicitud.
Hacer esto no solo evitará el envío de formularios duplicados sino que cualquier secuencia de comandos tendrá que golpear la primera Acción de Struts y obtener una sesión antes de que pueda enviarse a la Segunda Acción de Struts para enviar el formulario. Dado que un sitio no puede establecer una sesión para otro sitio, esto debería evitar el CSRF.
Si normalmente envías usuarios directamente a tu JSP, no lo hagas. En su lugar, cree una nueva clase ActionForward
de ActionForward
y configure esto como su método execute()
:
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
saveToken(request);
return super.execute(mapping, form, request, response);
}
Quiero implementar la prevención de falsificación de solicitudes entre sitios para mi aplicación web que se basa en el marco de Struts 1.x. Sé que Struts 2 Framework proporciona un interceptor de tokens para esto y puedo implementar una funcionalidad similar utilizando filtros.
Estoy un poco confundido acerca de algunas ideas 1) ¿Cómo puedo generar un token único de forma directa? (¿Puedo usar el token de clase de acción para este propósito que se usa para evitar el envío de formularios duplicados)
¿Hay algún problema en el uso del mecanismo de token de framework de struts 1.x para la prevención de CSRF?