El captcha es actualmente una de las formas más comunes de proteger los formatos libres. Se creó originalmente no para proteger la seguridad de los datos, sino para proteger contra el spam y reconocer que es un humano.
Sin embargo, es generado por una máquina, por lo que no siempre es perfecto, pero la tasa de éxito de una prueba de captcha ronda el 99% y sólo el 1% de las imágenes pueden ser descifradas por un robot de spam bien hecho.
Hay más opciones, por ejemplo yo uso esta solución:
Si el test de captcha puede ser resuelto, el usuario es probablemente humano. Pero es bueno pensar en los usuarios que no pueden resolver la tarea, especialmente los usuarios ciegos. Es una buena solución para combinar varias pruebas posibles (sobre todo la precarga de voz). Sin embargo, el reconocimiento de la voz por parte de una máquina es actualmente mucho más eficaz que la lectura de una imagen. Por lo tanto, esta solución no siempre es ideal.
A menudo, basta con generar una imagen en blanco de determinadas dimensiones e introducir en ella algunos caracteres de forma legible sin necesidad de editarla. ¡En serio! La mayoría de los bots de spam son estúpidos y no pueden atacar los formularios genéricos con este tipo de protección, aunque sea un texto perfectamente legible que un mejor OCR puede transcribir perfectamente.
La imagen resultante puede tener este aspecto:
<img src="captcha.php" alt="ukázková captcha">
Prueba a actualizar la página varias veces y verás que el código cambia aleatoriamente cada vez. Para fines de demostración, sólo se genera sin guardar, por lo que se eliminará inmediatamente después de cargarlo.
Resolví el código fuente utilizando la biblioteca PHPGD, que está disponible en prácticamente todas las instalaciones y alojamientos de PHP:
Header("Tipo de contenido: image/png");$obr = ImageCreate(100, 35);$pozadi = ImageColorAllocate ($obr, 219, 28, 49); //definición del color de fondo$bila = ImageColorAllocate ($obr, 255, 255, 255); //Definición del color blanco para el texto$styl = array ($pozadi);ImageSetStyle ($obr, $styl);$nahodne_cislo = rand(11111,99999); //sacando un número aleatorio de 5 caracteresimagestring($obr, 5, 25, 10, $nahodne_cislo, $bila); //función para dibujar texto (en este caso un número)ImagePNG($obr); //generar la imagen en la memoria y renderizarlaImageDestroy($obr); //borrar la imagen de la memoria (ya no será necesaria, porque se genera una vez)
La representación de la imagen es entonces sólo una cuestión de HTML:
<img src="captcha.php">
Tenga en cuenta que esta secuencia de comandos no es funcional por sí sola sin más modificaciones. Sólo sirve como demostración para generar una imagen sencilla.
Las pruebas de captcha son bastante fiables, pero son molestas y consumen mucho tiempo. A veces no son legibles, por lo que es bueno dar al usuario la opción de cargar una imagen diferente usando javascript para no tener que recargar toda la página y tener que rellenar todo de nuevo.
Recuerda: Lo que es una tarea trivial para un humano puede no ser nunca una solución alcanzable para una máquina. Por eso, incluso este primitivo captcha con texto perfectamente legible puede proteger contra más de la mitad del spam.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | es