2009-08-02 5 views
6

Actualmente estoy trabajando en un pequeño sitio de chat/foro que rematé en un fin de semana, y tiene entradas anónimas (es decir, sin nombres de usuario o contraseñas). Parece que podría ser fácil: un correo basura arruinado, pero no quiero molestar al usuario con captchas o entradas antispam similares.Bloqueo de spam en un sitio PHP sin molestar al usuario

¿Hay alguna alternativa invisible para el usuario? Gracias por tu ayuda.

Respuesta

6

No es una solución a prueba de bombas, pero puede tener algunos campos de entrada ocultos. Si no se dejan vacíos, atrapaste un bot. Los bots tienden a llenar todos los campos de entrada, mientras que los usuarios seguramente dejarán los campos que no vean vacíos.

+1

Para aclarar, los campos de entrada "ocultos" deben estar ocultos por CSS (estilo, estilo no en línea) o, mejor aún, javascript (aunque solo si JavaScript ya es una parte necesaria de su sitio). Hacer 'input type = hidden' no va a funcionar con ningún bot. – ChssPly76

+1

Solo como referencia, esta técnica se llama honeypot. – cletus

+0

Yo tampoco engaño a los bots. Puede usar JS fácilmente para verificar si un campo está oculto o no (incluso si estaba oculto por CSS). Además, supones que todos los campos estarán ocupados por bots, por lo que no te protegerá de los bots que solo llenan algunos de ellos. – RaYell

0

La idea de las capchas es que son muy fáciles de pasar para los humanos pero muy difíciles de evitar para los bots, etc. Si no quiere este tipo de solución, ¿qué evitará que esos spam-bots publiquen en su sitio?

Parece que quiere que su computadora sea segura pero no quiere usar un antivirus y un firewall.

Creo que podría crear una sesión para cada usuario que ingrese a su sitio y la primera vez que quiera publicar algo muéstreles la capcha (no es necesario que inicie sesión, solo pase capcha). Si lo pasan, solo almacene una bandera en sesión que sea humana. Siempre y cuando tengan su navegador abierto, pueden publicar y responder en su sitio lo que quieran. Es poco probable que Bots pase esta primera prueba.

0

Existen dos clases de protección antispam.

Lo primero es hacer que sea difícil para los robots automatizados tropezar con los datos en su sitio. El método de campo de formulario oculto se menciona con frecuencia para esto, y es adecuado para sitios de poco tráfico. Estas protecciones pueden ser trivialmente derrotadas por un bot de spam escrito para su sitio. Sin embargo, si eres un objetivo demasiado pequeño, esto no sucederá.

El segundo es el tipo "molesto". Esto generalmente implica un captcha, registro o confirmación por correo electrónico de la publicación. Puede usar algunos enfoques para que esto no sea tan molesto, pero requiere mucho más esfuerzo por parte del bot para publicar spam.

Tenga en cuenta que estos dos enfoques a menudo pueden impedir a los usuarios con discapacidad y los dispositivos móviles.

2

Esto ha funcionado 100% del tiempo para mí:

<input type="text" style="display:none" name="email" value="do not fill this in it is for spam catching" /> 

Entonces lado del servidor (PHP):

if($_POST['email'] != 'do not fill this in it is for spam catching') { 
    // spam 
} 

Como se mencionó anteriormente, la mayoría de los robots llenan todo, especialmente entradas del mismo nombre " correo electrónico".

+0

Aunque pueden ser lo suficientemente inteligentes como para no llenar entradas prellenadas. Es mejor dejarlo en blanco en mi opinión. – MitMaro

+0

Muy buen punto. Está funcionando perfectamente por el momento en mis sitios. Si (cuando) llega el día en que los robots superan a este método, buscaré otra cosa, por supuesto. Lo dejo ahí para su accesibilidad. –

8

Una cosa que debes saber sobre los spammers es que siempre buscan la fruta más fácil. Lo mismo con los piratas informáticos. Con esto quiero decir que elegirán los objetivos más fáciles de alcanzar que afectan a la mayoría de los usuarios. Esta es la razón por la cual las vulnerabilidades de PHP y Windows a menudo se explotan: afectan a tantos usuarios que, si encuentra tal debilidad/explotación, su "mercado" objetivo es enorme.

También es una gran parte de la razón por la que Linux y Mac OS permanecen relativamente indemnes por virus, por ejemplo: el mercado objetivo es mucho más pequeño que Windows. Ahora no comparo la seguridad y la solidez de Windows con Mac/Linux, pero aunque el modelo de seguridad de los dos últimos es mucho mejor, el número de ataques contra el primero sigue siendo desproporcionado con las deficiencias que tiene.

Digo esto porque una de las mejores formas de evitar este tipo de problemas es no utilizar softare popular. phpBB, por ejemplo, ha tenido muchos ataques contra él solo porque es muy popular.

Así que al hacer su propio sistema de chat/foro está en desventaja porque tiene un sistema que no tiene las pruebas de campo de algo popular, pero también tiene la ventaja de que no vale la pena más el tiempo del spammer para explotarlo. Entonces, lo que debe vigilar es qué pueden hacer los sistemas automatizados en su contra. Los formularios de contacto en sitios web tienden a tener marcadores reconocibles (como campos de nombre, correo electrónico y comentario).

lo que os aconsejo:

  • Haciendo caso omiso de las respuestas que vienen dentro dicen 5-10 segundos de enviar el formulario al usuario;
  • Usando un honeypot (campos ocultos CSS/JS como se describe en otra parte);
  • Uso de Javascript cuando corresponda para procesar, reordenar o mostrar el formulario;
  • Uso de nombres de campo de formulario no predecibles; y
  • Acelerar las malas respuestas por IP.
+1

Creo que una combinación de las defensas honeypot y timer sería un buen comienzo. ¿Cómo implementaría un temporizador? – SpleenTea

Cuestiones relacionadas