¿Es necesario utilizar la protección CSRF cuando la aplicación se basa en la autenticación sin estado (usando algo como HMAC)?
Ejemplo:
Tenemos una sola aplicación página (de lo contrario tenemos que añadir el token en cada enlace: <a href="...?token=xyz">...</a>
.
El usuario se autentica usando POST /auth
. En la autenticación exitosa, el servidor devolverá algún token.
El token se almacenará a través de JavaScript en alguna variable dentro de la aplicación de una sola página.
Este token se utilizará para acceder a URL restringidas como /admin
.
El token siempre se transmitirá dentro de los encabezados HTTP.
NO hay sesión Http ni cookies.
Hasta donde tengo entendido, no debería (?!) Haber posibilidad de usar ataques entre sitios, porque el navegador no almacenará el token y, por lo tanto, no puede enviarlo automáticamente al servidor (eso es lo que sucedería cuando se usan cookies / Sesión).
¿Me estoy perdiendo de algo?
Encontré información sobre CSRF + que no usa cookies para la autenticación:
https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/
"ya que no depende de las cookies, no necesita protegerse contra las solicitudes entre sitios"
http://angular-tips.com/blog/2014/05/json-web-tokens-introduction/
"Si seguimos el camino de las cookies, realmente necesita hacer CSRF para evitar solicitudes entre sitios. Eso es algo que podemos olvídese al usar JWT como verá. "
(JWT = Json Web Token, una autenticación basada en token para aplicaciones sin estado)
http://www.jamesward.com/2013/05/13/securing-single-page-apps-and-rest-services
"La forma más fácil de realizar la autenticación sin correr el riesgo de vulnerabilidades CSRF es simplemente evitar el uso de cookies para identificar al usuario "
http://sitr.us/2011/08/26/cookies-are-bad-for-you.html
"El mayor problema con CSRF es que las cookies no ofrecen absolutamente ninguna defensa contra este tipo de ataque. Si está utilizando la autenticación de cookies también debe emplear medidas adicionales para protegerse contra CSRF. La precaución más básica que puede tomar es asegurarse de que su aplicación nunca produzca efectos secundarios en respuesta a las solicitudes GET ".
Hay muchas más páginas que indican que no necesita ninguna protección CSRF si no usa cookies para la autenticación. Por supuesto, aún puede usar cookies para todo lo demás, pero evite almacenar nada parecido session_id
en su interior.
Si necesita recordar al usuario, hay 2 opciones:
localStorage
: Un almacén de valores-clave en el navegador. Los datos almacenados estarán disponibles incluso después de que el usuario cierre la ventana del navegador. Otros sitios web no pueden acceder a los datos porque cada sitio tiene su propio almacenamiento.
sessionStorage
: También un almacén de datos del navegador. La diferencia es: los datos se eliminan cuando el usuario cierra la ventana del navegador. Pero sigue siendo útil si su aplicación web consta de varias páginas. Entonces puedes hacer lo siguiente:
sessionStorage
sessionStorage
sessionStorage
o esperar a que el usuario cierre la ventana del navegador, lo que borrará todos los datos almacenados.(para ambos, eche un vistazo aquí: http://www.w3schools.com/html/html5_webstorage.asp )
¿Existe algún estándar oficial para la autenticación de tokens?
JWT (Json Web Token): Creo que todavía es un borrador, pero ya lo usan muchas personas y el concepto parece simple y seguro. (IETF: http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-25 )
También hay bibliotecas para muchos marcos disponibles. ¡Solo busca en Google!
TL; DR
Un JWT, si se usa sin cookies, niega la necesidad de un token CSRF, ¡PERO! al almacenar JWT en session / localStorage, expondrá su JWT y la identidad del usuario si su sitio tiene una vulnerabilidad XSS (bastante común). Es mejor añadir una csrfToken
clave para la JWT y almacenar la JWT en una cookie con secure
y http-only
conjunto de atributos.
Lea este artículo con una buena descripción para obtener más información https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage
Puede convertir esta protección CSRF en apátrida si incluye un reclamo xsrfToken JWT:
{ "iss": "http://galaxies.com", "exp": 1300819380, "scopes": ["explorer", "solar-harvester", "seller"], "sub": "[email protected]", "xsrfToken": "d9b9714c-7ac0-42e0-8696-2dae95dbc33e" }
Por lo tanto, deberá almacenar el csrfToken en localStorage / sessionStorage, así como en el propio JWT (que se almacena en una cookie segura y solo http). Luego, para la protección csrf, verifique que el token csrf en el JWT coincida con el encabezado csrf-token enviado.
La estrella de 'Gran Hermano', Claire Rehfuss, advierte a los fanáticos que no confíen en las cuentas de los spoilers.
Kristen Stewart una vez le dio un fuerte puñetazo a su coprotagonista de 'Blancanieves', Chris Hemsworth, que fue un ataque que el actor no vio venir.
En una entrevista con la revista GQ, Jin de BTS reveló que una parte de la canción de BTS y Coldplay 'My Universe' no 'llegó al corte final'.
'Scream' establece un regreso sangriento que provoca algunas nuevas direcciones, pero la nueva ola de asesinatos de Ghostface no es tan profunda como debería.
¡Nuestro mini crucigrama actualizado semanalmente combina nuestras lecturas favoritas de HowStuffWorks con pistas inteligentes!
Lavar la ropa ya es bastante malo sin tener que preocuparse por elegir el detergente adecuado. Entonces, ¿cuál es mejor? ó acaso importa?
Las familias Fugate y Combs en la zona rural de Kentucky perdieron la lotería genética, y ambos compartían un rasgo recesivo raro que hacía que su piel se viera azul cuando se casaron. ¿Cuál fue la causa de esto? ¿Y qué pasó con las familias?
Se están criando dos polluelos sin padre en un programa para salvar al cóndor de California de la extinción. ¿Cómo son posibles estos nacimientos 'vírgenes'?
La estrella de Vanderpump Rules, Katie Maloney-Schwartz, habló sobre el progreso que ha logrado en su viaje de amor propio en una publicación honesta y sincera en Instagram el jueves.
Jessica Alba compartió un encantador video en su Instagram que la muestra a ella y a sus hijos acurrucándose y jugando con los dos perros llamados Dolly y Lucy.
"Fue una situación de amor a primera vista", le dice una fuente a PEOPLE sobre Megan Fox y Machine Gun Kelly, quienes se comprometieron el fin de semana pasado durante unas vacaciones en Puerto Rico.
Según la policía, Devonne Marsh supuestamente cubrió a su novia, que no ha sido identificada, con líquido para encendedores y encendió las llamas.
Los empresarios no son personas promedio, son una raza especial. Sus ciertos rasgos de personalidad los ayudan a liderar equipos, administrar negocios y construir imperios.
Introducción Este proyecto de Customer Journey Map es la segunda y última sección que formará el bloque de análisis de mi estudio de caso de UX. El proceso ha sido guiado y desarrollado durante mis estudios en el UX Design Institute.
La naturaleza pública e inmutable de Bitcoin requiere el regreso de los nodos mixtos para lograr una verdadera privacidad a nivel de red. Harry Halpin y Ania Piotrowska 20 de enero de 2022 Muchos concibieron originalmente Bitcoin como un dinero digital anónimo, ya que todas las transacciones se realizan como transferencias entre pares entre direcciones de billetera que actúan como seudónimos.
Este mundo está lleno de posibilidades y probabilidades. A veces las cosas salen a tu manera, a veces no.