2011-06-03 13 views
6

Acabo de comenzar a portar mi código GWT-RPC al nuevo mecanismo RequestFactory.Prevención de CSRF al usar RequestFactory de GWT

Para evitar la falsificación de solicitudes entre sitios (CSRF), mi código GWT-RPC tomó la identificación de la sesión que se había almacenado en una cookie y la incluyó en la carga de la solicitud. ¿Es posible con RequestFactory?

Entiendo que hay cuatro métodos de Localizador obligatorios, incluyendo findEntity(id_type id); así que estoy pensando: oh querido: ¿dónde pongo mi identificación de sesión?

Respuesta

8

Generalmente, podrás extender DefaultRequestTransport añadir el token a la solicitud (por ejemplo, un encabezado personalizado, pero también se puede añadir al cuerpo de la petición) y pasarlo a la init de su RequestFactory. En el lado del servidor, utilizará un filtro de servlet o extenderá RequestFactoryServlet para procesar el token incluso antes de procesar la solicitud de RequestFactory. Usted es libre de definir su propio "protocolo" aquí: p. devolver un estado 403 o 401 (o lo que sea) y luego procesarlo en el RequestTransport para comunicar el resultado a su aplicación.

+0

Cool. Las cosas del lado del servidor no me desfasan, pero extender DefaultRequestTransport es un poco abrumador. ¿Añadiría quizás la identificación de la sesión como cabecera en RequestBuilder? – David

+1

La manera más fácil es, de hecho, agregarlo como encabezado (de ahí mi comentario entre paréntesis: "como un encabezado personalizado, pero también podría agregarlo al cuerpo de la solicitud"). –

Cuestiones relacionadas