Captcha o CAPTCHA son las siglas de Completely Automated Public Turing test to tell Computers and Humans Apart (prueba de Turing completamente automática y pública para diferenciar ordenadores de humanos).
Los Captcha se utilizan como controles de seguridad para disuadir a los spammers y hackers de utilizar formularios en páginas web para insertar códigos maliciosos y realizar actividades de Spam.
Un CAPTCHA es un tipo de sistema de desafío-respuesta diseñado para diferenciar a los humanos de los programas de software robótico.
Cómo Funcionan los Captcha?
Simplemente se le solicita al visitante que realice alguna tarea que un robot de software no puede realizar.
Las pruebas a menudo involucran imágenes JPEG o GIF, porque mientras que los bots pueden identificar la existencia de una imagen leyendo el código fuente, no pueden decir lo que la imagen representa.
Debido a que algunas imágenes CAPTCHA son difíciles de interpretar, los usuarios generalmente tienen la opción de solicitar una nueva prueba.
Diferentes Tipos de Captcha
El tipo más común de Captcha es el texto Captcha, que requiere que el usuario vea una cadena distorsionada de caracteres alfanuméricos en una imagen e ingrese los caracteres en una forma adjunta.
Los Captchas de texto también se representan como grabaciones de audio MP3 para satisfacer las necesidades de las personas con discapacidades visuales.
Al igual que con las imágenes, los robots pueden detectar la presencia de un archivo de audio, pero solo un humano puede escuchar y saber la información que contiene el archivo.
Los Captchas de reconocimiento de imagen, que también se usan comúnmente, piden a los usuarios que identifiquen un subconjunto de imágenes dentro de un conjunto más grande de imágenes. Por ejemplo, al usuario se le puede dar un conjunto de imágenes y se le puede pedir que haga clic en todas las que tienen automóviles.
Otros tipos de Captcha incluyen:
– Captcha matemático: requiere que el usuario resuelva un problema matemático básico, como sumar o restar dos números.
– 3D Super Captcha: requiere que el usuario identifique una imagen renderizada en 3D.
– No soy un robot Captcha: Requiere que el usuario marque una casilla.
– Marketing Captcha: requiere que el usuario escriba una palabra o frase en particular relacionada con la marca del patrocinador.
Ahora, con esta pequeña introducción, veremos como insertar un Captcha en tu formulario PHP.
Si no sabes como crear un formulario en PHP Mailer, visita el post Tu Formulario Web con PHP Mailer en vez de PHP mail
Paso a Paso para Insertar Captcha en Tu Formulario Web
1. Ingresa a la URL: https://www.google.com/recaptcha y haz clic en Admin Console
2. Luego, deberás ingresar con tu cuenta de correo Gmail para poder acceder a la configuración.
3. En la pantalla verás estadísticas de tus formularios con Captcha que hayas creado. Ahora deberás crear tu primer Captcha para tu formulario haciendo clic en el signo + que se encuentra en la parte superior derecha.
4. Completa todos los campos del formulario, en este caso vamos a seleccionar un tipo de Captcha donde tildamos la opción de “No soy un robot”. Luego de completar todos los campos, haz clic en Enviar
5. El sistema genera unos códigos que necesitaremos para configurar el formulario, por lo que podrías guardarlos o no cerrar la pestaña ya que lo utilizaremos en el siguiente paso.
6. Ahora, abriremos el archivo donde está el formulario y deberás ingresar el siguiente código:
<html> <head> <title>reCAPTCHA demo: Simple page</title> <script src="https://www.google.com/recaptcha/api.js" async defer></script> </head> <body> <form action="?" method="POST"> <div class="g-recaptcha" data-sitekey="your_site_key"></div> <br/> <input type="submit" value="Submit"> </form> </body> </html>
No te preocupes! Ahora te explicamos lo que debes ingresar en la página de tu formulario:
A.- Dentro de la etiqueta head coloca el siguiente código:
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
B.- En el código del formulario, en la etiqueta <form>, deberás agregar el siguiente código en el lugar donde quieras que aparezca el Catpcha:
<div class="g-recaptcha" data-sitekey="your_site_key"></div>
En “your_site_key”, dentro de las comillas, deberás ingresar el código que se generó en el punto 5
Un ejemplo completo sería el siguiente:
<!DOCTYPE html> <html> <head> <script src='https://www.google.com/recaptcha/api.js'></script> </head> <body bgColor="grey"> <form action="mandoMail.php" method=post name="formx"> <table width="450px"> <tr> <td valign="top"> <label for="Nombre">Nombre</label> </td> <td valign="top"> <input type="text" name="Nombre" maxlength="50" size="30"> </td> </tr> <tr> <td valign="top"> <label for="Apellido">Apellido</label> </td> <td valign="top"> <input type="text" name="Apellido" maxlength="50" size="30"> </td> </tr> <tr> <td valign="top"> <label for="email">Email</label> </td> <td valign="top"> <input type="text" name="email" maxlength="80" size="30"> </td> </tr> <tr> <td valign="top"> <label for="comentario">Comentario</label> </td> <td valign="top"> <textarea name="comentario" maxlength="1000" cols="25" rows="6"></textarea> </td> </tr> <tr> <td colspan="2" style="text-align:center"> <input type="submit" value="Enviar"> </td> </tr> </table> <div class="g-recaptcha" data-sitekey="6LfRSNISAAAAAMfRc6rmKwWZbJQA2EdpoR2Rr0XA"></div> </form> </body> </html>
Ahora, el archivo de validación sería, en este caso se llamaría mandoMail.php:
<?php if ($_POST['g-recaptcha-response'] == '') { echo "Captcha invalido"; } else { $obj = new stdClass(); $obj->secret = "6LfRSNISAAAAACKaHw2e-JvgeG-3src_dRGpL-Ql"; $obj->response = $_POST['g-recaptcha-response']; $obj->remoteip = $_SERVER['REMOTE_ADDR']; $url = 'https://www.google.com/recaptcha/api/siteverify'; $options = array( 'http' => array( 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => http_build_query($obj) ) ); $context = stream_context_create($options); $result = file_get_contents($url, false, $context); $validar = json_decode($result); /* FIN DE CAPTCHA */ if ($validar->success) { $email = trim($_POST['email']); $nombre = trim($_POST['nombre']); $apellido = trim($_POST['apellido']); $telefono = trim($_POST['telefono']); $comentario = trim($_POST['comentario']); $consulta = "E-mail: " . $email . " Nombre: " . $nombre . " Apellido: " . $apellido . "Comentario: " . $comentario; mail("ejemplo@MiDominio.com", "Contacto desde Formulario", $consulta); } else { echo "Captcha invalido"; } } ?>
7. Listo! Ya tienes tu formulario con Captcha configurado para evitar el correo basura.
Conclusión
Un Captcha determina si el usuario es real o un robot de spam. Los Captcha estiran o manipulan letras y números, utilizan imágenes y dependen de la capacidad humana para determinar qué tipo símbolos son. En general, se recomienda su uso, si tu sitio web es contantemente víctima de SPAM o de intrusiones molestas o peligrosas.
Las ventajas de usar CAPTCHA incluyen:
-
La prevención de spam desde programas automatizados que podrían enviar correos electrónicos, comentarios o anuncios.
-
La prevención de registros falsos o suscripciones a sitios web.
-
La mayoría de las personas saben qué son los CAPTCHA, por lo que los visitantes de un sitio web entenderán automáticamente lo que tienen la tarea de hacer.
-
Los CAPTCHA también son fáciles de implementar en la construcción de un sitio web.
Las desventajas de los CAPTCHA incluyen:
-
Los CAPTCHA no son infalibles y solo pueden limitar el spam.
-
Puede ser lento o molesto para los usuarios finales.
-
Para algunas personas, los CAPTCHA pueden ser difíciles de leer.
-
Los sitios web que utilizan CAPTCHA pueden notar disminución de tráfico debido a la dificultad o molestia del usuario final.