2008-09-01 19 views

Respuesta

27

Cualquier solicitud que hagan las llamadas AJAX en sus páginas también puede ser hecha por alguien externo a la aplicación. Si lo hace bien, no podrá decir si se hicieron como parte de una llamada AJAX de su aplicación web o de forma manual u otros medios.

Hay dos situaciones que puedo pensar de las que podría estar hablando cuando dice que quiere asegurarse de que solo sus llamadas AJAX puedan publicar datos: o bien no desea que un usuario malintencionado pueda publicar datos que interfiere con los datos de otro usuario o que realmente desea restringir las publicaciones para que estén en el "flujo" de una operación de solicitud múltiple.

Si le preocupa el primer caso (alguien que envía datos maliciosos a/como otro usuario), la solución es la misma ya sea que esté usando AJAX o no; solo tiene que autenticar al usuario por cualquier medio que sea necesario. - generalmente a través de la cookie de sesión.

Si le preocupa el segundo caso, entonces tendrá que hacer algo como emitir un token único en cada paso del proceso, y almacenar el token esperado en el lado del servidor. Luego, cuando se realiza una solicitud, verifique que haya una entrada correspondiente en el servidor para la acción que se está llevando a cabo y que los tokens esperados coincidan y que ese token no se haya utilizado todavía. Si no, rechaza la solicitud, si la hay, marca esa ficha como se usa y procesa la solicitud.

Si lo que le preocupa es algo más que uno de estos dos escenarios, entonces la respuesta dependerá de más detalles que los proporcionados.

+2

El problema con la autenticación de la cookie de sesión es que no es suficiente para evitar los ataques de CSRF. Es una buena idea agregar capas de seguridad adicionales, ya sea que esté usando ajax o no. http://en.wikipedia.org/wiki/Csrf –

+0

@JesseHallett, Hola, estoy utilizando Spring Securiy como mi capa de seguridad, y estoy haciendo solicitudes de publicación de AJAX desde el lado del cliente. Tengo habilitado el token CSRF para que se comparta un token de cliente de servidor en cada solicitud, que paso durante las solicitudes de publicación de AJAX. ¿Mi procedimiento es lo suficientemente seguro? –

5

Use las sesiones para asegurarse de que las publicaciones de Ajax se realicen en un contexto autenticado. Piense en su código Ajax como un cliente más de su servidor, de esta forma se vuelve más fácil abordar los problemas de autenticación.

Cuestiones relacionadas