manejar el usuario-sesión-cookie y el token csrf correctamente para la aplicación javascript

1

Tengo una aplicación web de django que sirve puntos finales api y una aplicación web javascript que se comunica con esos puntos a través de ajax.

Están bajo el mismo dominio pero en diferentes puertos.
api del servidor ---- www.ejemplo.com:9000/api/endpoints
aplicación web ---- www.example.com:9001

Ahora, guardamos dos tipos de cookies.
user-session-cookie # autentica al usuario. secure = True, http = True
csrftoken # secure = True

Me pregunto en general, ¿esta implementación es segura? ¿En qué circunstancias el sitio no es seguro?

No marco csrftoken http = True porque la aplicación javascript necesita obtener el csrftoken para enviar solicitudes. Sin embargo, estoy exponiendo el csrftoken a un ataque XSS. ¿Hay alguna forma en que pueda evitar que csrftoekn ataque XSS?

    
pregunta user35138 12.12.2013 - 22:48
fuente

1 respuesta

1

XSS y CSRF tienen una interacción piedra / papel / tijera. XSS es siempre dominante sobre CSRF, y casi todos los métodos en CSRF Prevention Cheat Sheet pueden ser pasado por alto con XSS. Un caso en el que XSS y CSRF no se pueden usar para desencadenar una solicitud es si la solicitud requiere la contraseña actual, un token enviado por mensaje de texto o correo electrónico al usuario u otro valor que no puede obtenerse mediante un navegador con las restricciones del SOP. El Sammy MySpace Worm es un buen ejemplo de cómo puede socavarse un token de sincronización CSRF usando un XHMLHttpRequest() .

XSS es un problema grave. Un método sólido de defensa contra XSS es definir una Política de seguridad de contenido (CSP) conjunto de reglas que evita que el HTML inyectado ejecute JavaScript. El CSP, junto con una fuerte validación de entrada, se puede usar para prevenir todo XSS dentro de una aplicación con un alto grado de certeza.

    
respondido por el rook 12.12.2013 - 23:11
fuente

Lea otras preguntas en las etiquetas