Posteado por: alejamp | Abril 26, 2009

LaNacion.com como votar comentarios sin control

Hace ya algún tiempo LNOL permite a los usuarios del sitio efectuar la valoraciones en los comentarios de las notas sin necesidad de estar autenticado en el sistema.

Para evitar que los usuarios abusen del sistema LNOL utiliza un control basado en cookies, un metodo probadamente inutil, que solo detiene a usuarios poco calificados tecnicamente.

Pero lamentablemente este sistema es aun mas sencillo de vulnerar dado que se puede saltar incluso el control de la cookie y votar N veces sin mayores problemas.

Debemos creer que al no ser un sistema critico, quizas LNOL prefiere asumir el riesgo de que terceros lo burlen en pos de la facilidad a la hora de votar

Como funciona?

Al pie de cada nota hay varios links:

image

El codigo HTML de estos links es el siguiente:

image

Cada comentario se indentifica con un ID en este caso la funcion panelVotar utiliza el ID 4081449 correspondiente a ese comentario.

Si vemos la funcion javascript:panelVotar(comentarioId,usuarioId,bX3,valorTipo_id)

Vemos una linea comentada:

   1: /*if(valorCookieLogin != "")  {//el usr esta logueado*/

Que da paso libre a votar sin necesidad de encontrarse logueado.

A continuacion actualiza la cookie cookieComentariosVotados, donde guarda la lista de IDs votados separados por pipes y luego invoca la funcion computarVoto

   1: if(actualizar)

   2: 170 {//no habia votado anteriormente => actualizo la cookie.

   3: 171 document.cookie = "cookieComentariosVotados="+ valorCookie + comentarioId + "," + valorUsuarioId + "|;expires="+fecha.toGMTString() + "; path=/";

   4: 172

   5: 173 //Computo el voto en BD.

   6: 174 computarVoto(comentarioId,valorUsuarioId,valorTipo_id);

   7: 175 }

computarVoto envia el voto al servidor de LNOL mediante un request a una pagina ASP.

   1: function computarVoto(comentarioId,usuarioId,valorTipo_id)

   2: {

   3: var url;

   4:  

   5: url = "/Scripts/VotarComentario.asp?comentario_id="+ comentarioId + "&user_id=" + usuarioId + "&valorTipo_id=" + valorTipo_id;

   6: var xmlHttp;

   7: try

   8: {

   9: // Firefox, Opera 8.0+, Safari

  10: xmlHttp=new XMLHttpRequest();

  11: }

  12: catch (e)

  13: {

  14: // Internet Explorer

  15: try

  16: {

  17: xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");

  18: }

  19: catch (e)

  20: {

  21: try

  22: {

  23: xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");

  24: }

  25: catch (e)

  26: {

  27: alert("Your browser does not support AJAX!");

  28: return false;

  29: }

  30: }

  31: }

Es decir que puedo colocar la URL en un browser y votar a gusto:

http://www.lanacion.com.ar/Scripts/VotarComentario.asp?comentario_id=4081449&user_id=valorTipo_id=2

Donde valorTipo_id indica el tipo de voto 1-Positivo y 2-Negativo.  Dado que el control en base a la cookie se realiza por medio de javascript, solo en ela pagina de la nota, no es necesario eliminar cookieComentariosVotados  en cada request efectuado a VotarComentarios.asp.  Por lo tanto generar votos duplicados se reduce a copiar la URL a un navegador y pesionar F5 tantas veces como votos se desean.


Dejar una respuesta

Su respuesta:

Categorías