Ads 468x60px

Perfil

domingo, 5 de mayo de 2013

instalar un captcha de seguridad

¿CĂłmo instalar un buen captcha de Seguridad?
Pasos para implementar reCAPTCHA
http://recaptcha.net/

1.- ¿QuĂ© es reCAPTHCA?
2.- Manual de instalaciĂłn de reCAPTCHA
3.- Personalizacion del theme



1.- ¿Que es CAPTCHA?


Captcha es el acrónimo de Completely Automated Public Turing test to tell Computers and Humans Apart (Prueba de Turing pública y automática para diferenciar a máquinas y humanos).
Este es un tĂ­pico test para la secuencia “smwm” que dificulta el reconocimiento de la máquina rotando las letras y añadiendo un gradiente de fondoSe trata de una prueba desafĂ­o-respuesta utilizada en computaciĂłn para determinar cuándo el usuario es o no humano. El tĂ©rmino se empezĂł a utilizar en el año 2000 por Luis von Ahn, Manuel Blum y Nicholas J. Hopper de la Carnegie Mellon University, y John Langford de IBM.
La típica prueba consiste en que el usuario introduzca un conjunto de caracteres que se muestran en una imagen distorsionada que aparece en pantalla. Se supone que una máquina no es capaz de comprender e introducir la secuencia de forma correcta por lo que solamente el humano podría hacerlo (salvo error).
Como el test es controlado por una máquina en lugar de un humano como en la Prueba de Turing, también se denomina Prueba de Turing Inversa.
Los Captchas son utilizados para evitar que robots, también llamados spambots, puedan utilizar ciertos servicios. Por ejemplo, para que no puedan participar en encuestas, registrarse para usar cuentas de correo electrónico (o su uso para envío de correo basura) o, más recientemente, para evitar que correo basura pueda ser enviado por un robot (el remitente debe pasar el test antes de que se entregue al destinatario).
reCAPTCHA
PLUGIN GRATIS ANTI SPAMBOTS

Existen tres formas de uso reCAPTCHA: mediante un plugin de aplicación, utilizando una biblioteca para su lenguaje de programación, y el uso de la web basados en la API. Los siguientes recursos le ayudará a encontrar el método correcto para su entorno.
Cliente API
El cliente API guĂ­a describe cĂłmo personalizar el comportamiento de la reCAPTCHA widget en su sitio. Esta guĂ­a se aplica a todos los plugins.
Entorno de programaciĂłn plugins
PHP
ASP.NET
•Classic ASP: vĂ©ase este foro
Python •Perl (aportados por Andy Armstrong)
Ruby (aportados por McClain Looney)
•Otro Ruby biblioteca de Jason Perry L
Java (aportados por Soren)
ColdFusion (aportados por Robin Hilliard)
AplicaciĂłn complementos
WordPress
MediaWiki
phpBB
•Movable Type (aportados por Josh Carter)
Drupal (aportados por Rob Loach)
Symfony (aportado por Arthur Koziel)
Typo3 (aportados por Jens Mittag. Véase también el ejemplo de utilizar el plugin)
NucleusCMS (aportados por Matt)
vBulletin (aportados por Magnus)
Joomla (aportados por Robert van den Breemen)
Mailhide JSP (por Tamas Magyar)
DocumentaciĂłn API
Estos documentos describen el bajo nivel reCAPTCHA API. Usted debe de referencia estos documentos si está creando un nuevo plugin
Comunidad
reCAPTCHA Foro: un lugar donde usted puede hacer preguntas sobre reCAPTCHA y complementos
reCAPTCHA Wiki: un lugar para publicar cualquier informaciĂłn relacionada con la reCAPTCHA
reCAPTCHA en Google Code: muchos plugins que se desarrollan. PregĂşntele a nosotros para acceder a ellos.
2.- MANUAL DE INSTALACION reCAPTCHA
Paso 1: Registrarse en reCAPTCHA
Nos tenemos que dirigir a http://recaptcha.net/ y registrarnos como usuarios. Nos solicitarán unos pocos datos personales para darnos de alta.
Una vez registrados debemos obtener unas claves para utilizar el sistema de captcha. Estas claves son específicas para cada dominio donde quieras utilizarlo. Las claves no son más que una llave pública y otra privada, que utilizaremos luego para poner la captcha en nuestra web.
Son algo como esto:
Public Key: 5LfCABCDEFGHIJUNDSBOejHq-5n5StSWawBpCAMX
Private Key: 6LfCAAAFHJSDFGHHJHDeju3a-Z5lomjShHKaGh9g
Esas claves son, lĂłgicamente, secretas y debemos mantenerlas asĂ­. Las claves anteriores son de ejemplo.
En el sitio de reCAPTCHA tendremos que descargarnos unos cĂłdigos PHP con una librerĂ­a PHP para poner en nuestro servidor y unos ejemplos de uso del sistema. Esto lo podemos conseguir en el apartado “Resources”. Veremos que tienen un plugin o librerĂ­a para trabajar con PHP, que además está perfectamente documentado.
Una vez descargado el zip que contiene la librería PHP, la tenemos que poner en algún lugar de nuestro servidor. Recuerda luego donde la has puesto, porque tendrás que hacer un include con PHP de esa librería.
Por ejemplo, podríamos colocar dicha librería en el mismo directorio donde está la página PHP que va a hacer uso de ella. Entonces la incluiríamos con algo como esto:
1require_once('recaptchalib.php');
Paso 2: Incluir el captcha en el formulario
En la librerĂ­a descargada (‘recaptchalib.php’) Hay una funciĂłn que sirve para mostrar la captcha. Simplemente tenemos que llamarla con los parámetros correctos. La funciĂłn devuelve el cĂłdigo HTML que tenemos que colocar en la página para que se vea la captcha.
1recaptcha_get_html($captcha_publickey, $error_captcha);
Los parámetros que recibe son la llave pública que conseguimos anteriormente y un código de error, que es opcional. Luego veremos de dónde podría venir ese código de error.
El cĂłdigo del formulario serĂ­a algo como esto:
1<?
2require_once('recaptchalib.php');
3//Llaves de la captcha
4$captcha_publickey = "xxxxxxxxxxxxxxxxxxxxxxx";
5$captcha_privatekey = "yyyyyyyyyyyyyyyyyyyyyy";
6//por ahora ponemos a null el error de la captcha
7$error_captcha=null;
8?>
9 
10<form action="miejemplo_formulario.php" method="post">
11Nombre: <input type="text" name="nombre" size="30">
12Edad: <input type="text" name="edad" size="3">
13<br>
14<?
15//escribimos en la página lo que nos devuelve recaptcha_get_html()
16echo recaptcha_get_html($captcha_publickey, $error_captcha);
17?>
18<br>
19<input type="submit" value="Enviar">
20</form>
Paso 3: Validar la captcha
Existe otra función para validar la captcha, llamada recaptcha_check_answer(). Esta función recibe también varios parámetros: La llave privada, la IP del usuario, y dos campos que contienen los valores que envía la captcha dentro del formulario $_POST["recaptcha_challenge_field"] y $_POST["recaptcha_response_field"].
Esta funciĂłn devuelve un objeto que tiene dos propiedades:
is_valid, un boleano para decir si es se ha validado correctamente la captcha. error, un código de error que especifica qué ha ido mal si no se validó correctamente el texto.
PodrĂ­amos validar la captcha con algo como esto:
1<?php
2$captcha_respuesta = recaptcha_check_answer ($captcha_privatekey,
3$_SERVER["REMOTE_ADDR"],
4$_POST["recaptcha_challenge_field"],
5$_POST["recaptcha_response_field"]);
6if ($captcha_respuesta->is_valid) {
7//todo correcto
8//hacemos lo que se deba hacer una vez recibido el formulario válido
9}else{
10//El código de validación de la imagen está mal escrito.
11$error_captcha = $captcha_respuesta->error;
12}
13?>
Llamamos a la función recaptcha_check_answer() enviando los parámetros comentados y guardamos el valor devuelto por la función en la variable $captcha_respuesta.
Luego comprobamos si el atributo $captcha_respuesta->is_valid es true. En ese caso sabemos que el texto escrito de la imagen se ha validado correctamente y hacemos lo que haya que hacer en el formulario.
Si $captcha_respuesta->is_valid era falso, entonces quiere decir que no estaba bien escrito el texto de la imagen. Podemos entonces actualizar la variable $error_captcha para que cuando mostremos de nuevo la captcha podamos pasarle el error generado y que avise al usuario.
Tenemos nuestra captcha funcionando!
El cĂłdigo completo de este ejemplo es el siguiente:
1<html>
2<head>
3<title>Página con formulario protegido por captcha</title>
4</head></span>
5 
6<body>
7<?
8require_once('recaptchalib.php');
9//Llaves de la captcha
10$captcha_publickey = "xxxxxxxxxxxxxxxxxxxxxxx";
11$captcha_privatekey = "yyyyyyyyyyyyyyyyyyyyy";
12$error_captcha=null;
13 
14if ($_POST){
15$captcha_respuesta = recaptcha_check_answer ($captcha_privatekey,
16$_SERVER["REMOTE_ADDR"],
17$_POST["recaptcha_challenge_field"],
18$_POST["recaptcha_response_field"]);
19if ($captcha_respuesta->is_valid) {
20//todo correcto
21//hacemos lo que se deba hacer una vez recibido el formulario válido
22echo "Todo correcto!";
23}else{
24//El código de validación de la imagen está mal escrito.
25echo "Has escrito mal el texto";
26$error_captcha = $captcha_respuesta->error;
27}
28}
29?>
30 
31<form action="miejemplo_formulario.php" method="post">
32Nombre: <input type="text" name="nombre" size="30">
33<br>
34Edad: <input type="text" name="edad" size="3">
35<br>
36<?
37//escribimos en la página lo que nos devuelve recaptcha_get_html()
38echo recaptcha_get_html($captcha_publickey, $error_captcha);
39?>
40<br>
41<input type="submit" value="Enviar">
42</form>
43 
44</body>
45</html>
3.-PERSONALIZACION DEL THEME
Lo importante son la configuraciĂłn inicial mediante la variable RecaptchaOptions, las funciones de javascript para las distintas acciones(Recaptcha.reload(), Recaptcha.switch_type(‘audio’), Recaptcha.showhelp()), el id del div donde va el captcha (recaptcha_image) y el input donde se escribe el captcha
1<input type="text" id="recaptcha_response_field" name="recaptcha_response_field" />
1<script>
2     var RecaptchaOptions = {
3        theme: 'custom',
4        lang: 'es',
5        custom_theme_widget: 'frm_recpatcha'
6     };
7 </script>
8 <div class="frm_recpatcha">
9 <div class="frm_recaptcha_img" id="recaptcha_image" >
10    <img width="307" height="55" alt="Captcha" title="Captcha" class="captcha" src="/img/recaptcha.gif" alt="RECAPTCHA" />
11 </div>
12 
13 <img src="/imgs/recaptcha_buttons.gif" width="26" height="57" alt="Captcha" title="Captcha" style="float:left;margin:0 auto; display:block;" />
14 <p style="margin:5px 10px;"><a href="javascript:Recaptcha.reload()" class="azul">Recargar</a></p>
15 <p style="margin:5px 10px;"><a href="javascript:Recaptcha.switch_type('audio')" class="azul">Audio</a></p>
16 <p style="margin:5px 10px;"><a href="javascript:Recaptcha.showhelp()"  class="azul">Ayuda</a></p>
17 <p><label style="">Introduce las 2 palabras de la imagen:</label></p>
18 <input type="text" id="recaptcha_response_field" name="recaptcha_response_field" name="#" maxlength="100" class="intro_captcha" />
19<?php
20echo recaptcha_get_html($captcha_publickey, $error_captcha);
21?>
Tags de bĂşsquedas:
captcha javascript,como poner un captcha,poner captcha,poner captcha en mi web,cĂłmo instalar una recaptcha en formulario,implementar captcha jsp,poner captcha en formulario,poner el camptcha en un <img>,simple captchas para mi web