Honeypot
Resumen
Un honeypot es una técnica que añade a un formulario un campo oculto que las personas no ven y que considera bot a quien introduzca un valor en ese campo. Las personas no notan que el campo existe y no lo rellenan, pero los bots rellenan de forma mecánica todos los campos del formulario y acaban introduciendo un valor también en el campo oculto. Esta diferencia se aprovecha para detectar los bots.
Cómo se implementa
Implementar un honeypot es sencillo. Se añade al formulario un campo de entrada con el mismo aspecto que los campos normales y, con CSS, se le aplican estilos como «display: none» o «position: absolute; left: -9999px» para colocarlo fuera de la pantalla. En el lado del servidor, se rechaza la solicitud si ese campo contiene algún valor.
Si se da al campo un nombre que los bots tiendan a rellenar automáticamente, como email2 o website, la tasa de detección sube. Al revés, un nombre que delata claramente que es un honeypot, como hp_field, puede ser esquivado por los bots avanzados.
Límites y combinaciones
El honeypot tiene la ventaja de que cuesta poco implementarlo y apenas afecta a la experiencia del usuario. Pero los bots avanzados pueden analizar el CSS, detectar el campo oculto y evitar rellenarlo. Además, la función de autocompletado del navegador a veces introduce un valor en el campo oculto, y un usuario legítimo puede acabar detectado por error.
Por eso, en lugar de usar el honeypot solo, se diseña una defensa en varias capas que lo combina con la prueba de trabajo y la limitación de frecuencia. El reparto de papeles consiste en tratar el honeypot como una primera medida de bajo coste que filtra los bots simples, y en encargarse de los bots que se cuelan con la prueba de trabajo y la limitación de frecuencia.