2011-01-19 14 views
9

¿Cuáles son exactamente los riesgos a los que me expongo si no utilizo los tokens csrf en mis formularios? No busco etiquetas simples o nombres de los riesgos, porque pueden ser confusos. Necesito entender qué es exactamente lo que un atacante puede hacer y solo bajo qué circunstancias pueden hacerlo, en un lenguaje sencillo.Formulario sin token CSRF: ¿cuáles son los riesgos

+8

Parece alguien tratando de obtener más información sobre la seguridad de las aplicaciones. – park

Respuesta

9

Una vulnerabilidad CSRF es aquella que permite a un usuario malintencionado (o sitio web) hacer que un usuario desprevenido realice una acción en su sitio que no desea que suceda.

Algunos ejemplos del mundo real serían cosas como si permitiera que un usuario elimine una cuenta a través de GET en lugar de POST, alguien podría publicar el siguiente comentario en su sitio (suponiendo que el sitio tiene alguna manera de publicar comentarios u otras entradas, etc.)

Pensé que haría un comentario en su sitio. ¡Mira esta imagen genial!
< img src = 'http: //example.com/delete_my_account.php"/ >

Y ahora cada vez que un usuario carga registra en esa página, o será borrada su cuenta si se ha hecho más. POST en lugar de GET, alguien podría crear un formulario y engañar a los usuarios para que lo envíen y ocurrirá el mismo resultado. Mientras que si usaste un token CSRF, esto no sería posible.

Otro ejemplo sería que un sitio externo podría crear un formulario que envíe mensajes POST a su sitio y realizar una acción indeseable. Por lo tanto, digamos que su sitio tiene un carrito de compras que no utiliza tokens CSRF. Un sitio malicioso podría crear un formulario con un bu tton que dice "Haga clic aquí para registrarse", pero realmente ordena 1000 de algo de su sitio. Si un usuario conectado de su sitio visita este sitio malicioso y hace clic en el botón, recibirán una agradable sorpresa por correo.

Obviamente hay otros casos, estos son solo algunos ejemplos. Una búsqueda en Google debería mostrar muchos artículos y tutoriales, muchos de los cuales probablemente tendrán otros ejemplos. El Wikipedia page también tiene algunos ejemplos que pueden resultarle interesantes.

La idea principal de los ejemplos es que alguien puede engañar a su sitio para realizar una acción como si viniera de un usuario, cuando realmente el usuario no sabía que estaba sucediendo o no quería que sucediera. Si tiene algún tipo de acción en su sitio que sea destructiva (es decir, puede eliminar elementos de una cuenta de usuario, cerrar sesión en un usuario, etc.) o crítica (es decir, se trata de dinero), probablemente debería utilizar tokens CSRF. Si su sitio es solo un álbum de fotos para amigos, etc. probablemente no necesite molestarse con los tokens de CSRF (aunque siempre es bueno practicar cuando construye un sitio que los necesita).

A menos que agregue un token para asegurarse de que una solicitud proviene de un formulario que su sitio presentó intencionalmente al usuario, realmente no tiene forma de saber si el usuario pretendió realizar la acción.

Por lo tanto, siempre debe utilizar un token único en cada formulario que genere que los correos electrónicos POST y validar todas las solicitudes que se envíen a su sitio POST tienen un token válido para el usuario actual. También asegúrese de caducar los tokens después de una cierta cantidad de tiempo para que no duren para siempre.

1

Le aconsejo que lea este excelente artículo explicando qué es CSRF y cómo puede protegerse mejor contra él.

+0

samquo el artículo explica eso o soy estúpido: $ Tiene una sección "Exploit de ejemplo" – Alfred

+1

@samquo probablemente su sitio no sea atacado por esto. Pero, por ejemplo, si gmail no tenía protección CSRF cuando la cookie está configurada, podían enviar correos electrónicos usando mi cuenta. Todo está realmente en el artículo. Deberías leerlo? – Alfred

+0

@samquo es probable que su sitio no sea atacado por esto. Pero, por ejemplo, si gmail no tenía protección CSRF cuando la cookie está configurada (estoy conectado) podrían enviar correos electrónicos usando mi cuenta. Todo está realmente en el artículo. Deberías leerlo? – Alfred

Cuestiones relacionadas