Compartiendo el conocimiento
RSS icon Email icon Bullet (black)
  • Preguntas de Seguridad, Códigos Captcha y Anti-Spam (Artículo 1 de 2)

    Posted on febrero 11th, 2009 admin 3 comments

    Queridos suscriptores,

    En esta ocasión vamos hablar de la utilidad y significado de esas preguntas de seguridad y código extraños, que generalmente nos encontramos y debemos rellenar a la hora de registrarnos en un WebSite, o a la hora de postear en un foro o en un blog.

    La intención de insertar estas preguntas aleatórias no es ni más ni menos que la de crear un sistema capaz de poder diferenciar si realmente es una persona humana la que está intentando postear/registrarse, o por si el contrario se trata de un "Robot" cuya intención es generar Basura (Spam).

    Un punto al que debemos dar mucha importacia, es al de la accesibilidad. Habremos visto multitud de veces (a mi me ha pasado en muchas ocasiones), códigos de seguridad de dificil visualización, con carácteres dificiles de diferenciar, donde hemos tenido que reintentar varias veces el envío del formulario porque no hemos sido capaces de acertar dicha pregunta.
    Imaginaros ahora, personas con algún tipo de deficiéncia visual, puede resultar extremadamente dificil poderle brindar la posibilidad de participar en dicha Web.

    Desde el W3C se proponen una serie de alternativas para poder realizar estas comprobaciones visuales, sin dejar de lado la accesibilidad de personas con algún tipo de problemas físicos.

    Creemos una validación visual con PHP

    En este primer artículo, de un total de dos, os vamos a proponer una técnica básica, a modo de ejemplo educativo anti-spam.

    Las características son las siguientes:

    • Realizaremos una pregunta aritmética extremadamente fácil de responder.
    • Para que dicha pregunta no sea fácil de ser leida por los robots de spam, la transformaremos en una imagen.
    • La pregunta siempre será aleatoria en cada recarga de la página.

    Veamos primero el resultado del ejemplo (Ver ejemplo)

    El código del ejemplo.

    <?
        // Iniciamos una sessión
        session_start();
    ?>
    <html>
        <head>
            <title>Pregunta anti-spam</title>   
        </head>
        <body>
            <?
                // Verifico que el formulario haya sido enviado
                if (isset($_POST['spam'])){
                    // Si la respuesta es correcta muestro un mensaje de Ok, en caso contrario KO
                    if ($_SESSION['n1']+$_SESSION['n2']==$_POST['spam']){
                        echo "Respuesta correcta.";
                    }else{
                        echo "Respuesta err&oacute;nea.";
                    }
                    echo "<br/><a href='".$_SERVER['PHP_SELF']."'>Volver</a>";
                   
                    // Elimino la imagen generada
                    unlink($_SESSION['imagen']);
                }else{
            ?>
                    <form name="captcha" action="<? $_SERVER['PHP_SELF']; ?>" method="POST">
                        <?
                            // Creación de la imagen con sus medidas (Ancho y alto). Libreria GD instalada con PHP
                            $imagen = imagecreate( 250, 20 );
                           
                            // Definimos el color blanco para el Background y negro para la letra                       
                            $bg = imagecolorallocate( $imagen, 255, 255, 255 );
                            $negro = imagecolorallocate( $imagen, 0, 0, 0 );
                           
                            // Obtenemos 2 números aleatorios comprendidos entre el 1 y el 9 inclusives
                            $n1=mt_rand(1,9);
                            $n2=mt_rand(1,9);

                            $_SESSION["n1"]=$n1;
                            $_SESSION["n2"]=$n2;

                            // Convertimos un texto a una imagen utilizando la fuente Comic
                            ImageTTFText($imagen, 12, 0, 0, 16, $negro, "comic.ttf", "¿Cual es la suma de $n1 y $n2?");
                           
                            // Nombre del fichero de imagen
                            $_SESSION['imagen'] = "captcha".$n1.$n2.".gif";
       
                            // Guardamos el fichero Gif en disco y destruimos la refenrecia a la misma.
                            imagegif( $imagen, $_SESSION['imagen']);       
                            imagedestroy( $imagen );

                        ?>
                        <!-- Mostramos la imagen en HTML -->
                        <img src="<? echo $_SESSION['imagen']; ?>">
                        <input type='text' name='spam' maxlength=10 size=5>

                        <input type="submit" value="Comprobar">
                    </form>
            <? } ?>
        </body>
    </html>

    Descarga del fichero con el ejemplo para que lo probeis en vuestro servidor.

 

3 Respuestas to “Preguntas de Seguridad, Códigos Captcha y Anti-Spam (Artículo 1 de 2)”

  1. Excellent post, amazing looking blog, added it to my favorites.

  2. Hey There. I found your blog using msn. This is a very well written article. I will be sure to bookmark it and return to read more of your useful information. Thanks for the post. I will certainly return.

  3. Admin – I’ve checked out http://www.weblogica.es/wordpress/articulos/preguntas-de-seguridad-codigos-captcha-y-anti-spam-articulo-1-de-2/ and I really like your writing style like in your post WebLogica » Blog Archive » Preguntas de Seguridad, Códigos Captcha y Anti-Spam (Artículo 1 de 2). I am looking for blog authors who would like to write articles as either a full time job or part time job (for some extra money). I think your writing style would work very well. You receive pay per article, anywhere from $5 to $50 per article depending on the topic, article length, etc… If interested you can find more information at http://www.OnlineHomeWriter.net. Have a good day – Tina