5 de agosto de 2012

Mejorando poco a poco mis scripts

Al concurso que diseñé e implementé para la página de música pop en el que el premio era una motocicleta lo hackearon. Los abogados de la empresa decidieron no ignorar la trampa y descalificar a todos los participantes cuyos votos tenían un "evidente comportamiento automatizado". En otros lados no revisan tan a fondo, no les importa que los votos vengan de la misma ip, que sean siete u ocho votos por segundo, que los participantes acumulen 200 mil votos o más (incluso si la cuenta de facebook relacionada con esos votos sólo tiene 20 amigos), etc.

No, en otros lados ven que ese participante acumuló más votos que ninguno, y le dan el premio, y se acabó, sin preguntas ni dudas. Pero en el caso de la empresa donde trabajo ahí decidieron que nel, así que en cuanto detectamos el problema de la inyección de votos los jefes hablaron a gobernación, se protegieron legalmente, y me pidieron un reporte detalladísimo de los participantes con votos fraudulentos. Lo entregué y al final ganó una chica que supongo que ni se imaginaba llegar a estar entre los ganadores. tenía solamente 65 votos con ocho mil de diferencia con el que menos votos tenía de los que luego descalificamos.

Una semana después del cierre del concurso me pidieron otro mecanismo similar, ahora para la plaza de Guadalajara, y el premio iba a ser un convivio con una banda de rock. El premio, al no ser un vehículo vendible, no iba a atraer a hackers como los que hicieron trampa en el concurso anterior, sin embargo por defender mi honor pensé en mejorar mis scripts para evitar los fraudes.

La primera cosa que se me ocurrió fue una cookie, que debía ser enviada encriptada junto con la fecha/hora y la ip del votante a un script verificador, y si ese script arrojaba una respuesta positiva entonces se almacenaría en la base de datos el voto. Como sea no hubo tiempo para implementar esa idea, así que la mejora sólo consistió en 1. verificar que no se hubiera votado desde esa misma ip en el último minuto, y 2. corroborar que no hubiera más de 10 votos desde la misma ip. La siguiente versión va a tener la comprobación por medio de cookie, más algún captcha o algo por el estilo para disminuir la posibilidad de bots.

1 comentario:

Baruc dijo...

Buena idea!!, pero no esto de información ida y vuelta no podría hacer el proceso mas lento?

BAP