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.
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
Solo como referencia, esta técnica se llama honeypot. – cletus
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