Estoy tratando de implementar la protección CSRF en una aplicación creada usando node.js usando el framework express.js. La aplicación hace un uso abundante de las llamadas posteriores de Ajax al servidor. Entiendo que connect framework proporciona el middleware CSRF, pero no estoy seguro de cómo implementarlo en el ámbito de las solicitudes de publicación Ajax del lado del cliente.¿Cómo implementar la protección CSRF en llamadas Ajax usando express.js (buscando el ejemplo completo)?
Hay partes y piezas acerca de esto en otras preguntas publicadas aquí en stackoverflow, pero todavía tengo que encontrar un ejemplo razonablemente completo de cómo implementarlo desde el lado del cliente y del servidor.
¿Alguien tiene un ejemplo de trabajo que les interese compartir sobre cómo implementar esto? La mayoría de los ejemplos que he visto suponen que estás renderizando el formulario en el lado del servidor y luego enviándolo (junto con el campo de formulario csrf_token incrustado) al lado del cliente. En mi aplicación, todo el contenido se representa en el lado del cliente (incluidas las plantillas) a través de Backbone.js. Todo lo que hace el servidor es proporcionar valores en formato JSON, que son utilizados por varios Modelos en Backbone.js en el lado del cliente. Según tengo entendido, necesitaría recuperar csrf_token a través de ajax antes de poder usarlo. Sin embargo, me preocupa que esto pueda ser problemático desde el punto de vista de la seguridad. ¿Es esta una preocupación valida?
Gracias por la respuesta rápida. En mi aplicación, todo el contenido del lado del cliente se realiza a través de ajax. La representación real del contenido (incluidas las plantillas) se realiza en el lado del cliente. Todo lo que hace el servidor es proporcionar datos variables al lado del cliente en formato JSON. Esto significaría que tengo que recuperar el token CSRF a través de ajax para presentarlo en la página para que pueda enviarse de vuelta en la solicitud posterior ajax. Me preocupa que esto pueda ser problemático desde el punto de vista de la seguridad, ¿es esto una preocupación válida? – Benjen
Si puede, una buena forma de obtener el CSRF para el cliente es hacerlo en una etiqueta 'meta' (a la Rails) o algo similar de Express. –