2008-09-03 10 views
12

¿Qué mecanismos conoces que impidan que los spammers anónimos abusen de tu sitio?¿Eres humano? (o Cómo evitar el correo no deseado)

Por ejemplo, digamos que tengo un sitio donde las personas pueden votar algo. Pero yo no quiero que alguien envíe algo spam a la parte superior. Así que encontré (a) creando una cuenta y solo se me permitió votar una vez y (b) CAPTCHA para disminuir el correo no deseado. ¿Qué otros métodos sabes y qué tan buenos funcionan?

Respuesta

13

Lo más importante que he notado es que hagas lo que hagas, quieres que tu sistema sea único. Desea que un atacante tenga que adaptar su programa de automatización para su sitio específico, en lugar de simplemente lanzar un script preexistente que funcionará en casi cualquier lugar. Ni siquiera tiene que ser criptográficamente seguro; solo tiene que hacer que su sitio sea un poco diferente de la norma.

Esto no significa que no pueda o no deba usar algo como un widget captcha preconstruido. ¡Absolutamente use uno de esos como punto de mira! Simplemente significa que tienes que personalizarlo en alguna parte para que ocurra algo extra que esté fuera de la norma y romperá cualquier script preexistente que normalmente podría vencerlo.

Si su sitio es lo suficientemente grande como para que los atacantes lo ataquen específicamente, entonces su pequeña personalización sencilla probablemente ya no aguante más y podría haber hecho algo un poco más especial y pensar en la criptografía real y todo eso. Pero esa es una de esas cosas que es un "buen" problema para tener.

0

stackoverflow tiene una serie de características que ayudan con esto; Creo que el paso más útil que puede tomar es deshabilitar la capacidad de voto de los usuarios anónimos y las cuentas nuevas. De esta forma, nadie puede suscribirse a cientos de cuentas y usar su único voto para dominar a otros usuarios. Yo diría que requerir algunas publicaciones o membresía por un cierto período de tiempo son opciones decentes.

Algunos dirían que podría permitir un voto por dirección IP para ayudar a solucionar este problema, pero he jugado muchos juegos donde los usuarios maliciosos con un número casi infinito de proxies desafían la seguridad basada en la dirección IP. Es un elemento de disuasión, pero un usuario inteligente lo sorteará fácilmente.

2

¡Cargue los votos, como lo hacen en algunos shows de "talentos" de televisión, y reciba correo basura todo el tiempo en el banco!

En serio, este es un problema realmente difícil, y algún día (tal vez pronto, si escuchas Ray Kurzweil), las computadoras harán pruebas para detectar humanos. Las respuestas que agrego a la lista tienen inconvenientes obvios, pero solo por el simple hecho de enumerar: moderación (haga que los humanos realicen las pruebas) y seguimiento basado en IP (limite el número de votos de un host).

+0

American Idol no cobra por los votos. – jimyi

+0

Ratas, supongo que no puedo usar eso como una excusa para evitar que mis hijos voten. Actualizaré mi respuesta! – erickson

+0

@jimyi: la compañía telefónica a través de la cual envía su voto basado en mensajes de texto sí lo hace. –

4
  • limitar el número de votos por dirección IP por el tiempo
  • proxies Bloque de anonimato.
  • Para votar: ¿Qué hay de barajar el valor que tiene que ser devuelto por el formulario "por sesión". Una vez que "1" significa el primer elemento, "2" significa el segundo. Entonces "77" significa el primer elemento, "812" significa el segundo, ... podría haber algunas matemáticas simples detrás de la escena, pero evita que los usuarios simplemente envíen la misma consulta HTTP una y otra vez.
  • Lo que funcionó muy bien para mí: utilizar formularios AJAX, no simples formularios HTTP. Técnicamente, no es mucho más complicado falsificar votos, pero he escrito un software de blog simple y su único mecanismo de protección contra SPAM es enviar los comentarios a través de AJAX, sin SPAM hasta el momento.
0

Normalmente uso una combinación de los dos: un usuario anónimo es libre de navegar por todo, pero si quiere votar, entonces tiene que registrarse.

En el proceso de registro, dependiendo de la situación, utilizo un correo optin thru (para completar el registro y confirmo que al menos existe el buzón) y/o un CAPTCHA.

A partir de ese momento puede decidir si el usuario puede elegir más de una vez, o cualquier otra regla.

Btw No soy partidario de las restricciones basadas en IP: hay muchas situaciones en que la red de grandes organizaciones usa poca IP para todos sus usuarios, por lo que el riesgo de bloquear a los usuarios que pueden votar es alto.

9

Para un sistema de CAPTCHA, lo recomiendo reCAPTCHA.

Los CAPTCHA tradicionales generados por computadora serán eventually be broken mediante el desarrollo de un sistema suficientemente inteligente. Por ejemplo, here's someone que dice romper el CAPTCHA de Google, que anteriormente se consideraba irrompible, con una tasa de éxito del 30%. reCAPTCHA, por definición, muestra solo imágenes que no pueden reconocerse mediante el reconocimiento óptico de caracteres.

Y al mismo tiempo, el esfuerzo de los usuarios se dirigirá hacia el bien común: ayudan a digitalizar libros al reconocer palabras que no pueden reconocerse automáticamente.

Ver here para una explicación más detallada y probarlo.

4

Soy fan del "campo oculto" CAPTCHA. No recuerdo donde leí sobre ello, pero la idea es la siguiente:

  • crear su forma tan normal
  • añadir un campo extra, pero lo ocultan (es decir style="display:none" en el div que rodea o fila de la tabla)
  • después del envío, si el campo está en blanco, realice la acción adecuada (por ejemplo, envíe un correo electrónico); si el campo ha sido rellenado, entonces es un robot que envía

El único caso donde esto falla es si el navegador del usuario no maneja CSS (o lo tienen apagado), lo cual es muy raro.

+0

Mi solución es similar a esta: uso javascript para ocultar un campo de entrada y establecer su valor. si no hay javascript, le pido al visitante que ingrese un valor no trivial en él. si javascript, es automático. Luego realizo un lado del servidor de prueba simple. – Aif

Cuestiones relacionadas