Foros del Web » Programando para Internet » PHP »

Validacion Antispam

Estas en el tema de Validacion Antispam en el foro de PHP en Foros del Web. Buenas. Recién empiezo con el tema del PHP y seguridad web. Y quise hacer un buen sistema Antispam (o que funcione medianamente bien) de esos ...
  #1 (permalink)  
Antiguo 29/07/2006, 22:51
Avatar de c0lo  
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires
Mensajes: 281
Antigüedad: 12 años, 4 meses
Puntos: 1
Validacion Antispam

Buenas. Recién empiezo con el tema del PHP y seguridad web. Y quise hacer un buen sistema Antispam (o que funcione medianamente bien) de esos que te pida que ingreses una serie de caracteres para continuar navegando.

La idea es que yo hice el siguiente codigo. Quería preguntarles que les parece, si esta bien, si realmente vale la pena, si es facil de "esquivar" y si tiene mejora pendiente. Bienvenida sea ;)

Código PHP:
<div style="width:300px; height:230px; background:#999; padding:5px; border: 2px solid #333; text-align: center; margin:auto;">
<?php
//
// Aca agarro el ingreso y el numero que salio random
//              y pregunto si coinciden..
function letra()
{
    
$cadena '';
    for (
$i 0$i<8$i++)
    {
        if(
mt_rand(0,1) == 1)
        {
            
$cadena=$cadena chr(mt_rand(65,90));
        }
        else
        {
            
$cadena=$cadena mt_rand(0,9);            
        }
    }
    return 
$cadena;    
}

$numero $HTTP_POST_VARS['numero'];
$ingreso $HTTP_POST_VARS['ingreso'];

if (
$HTTP_GET_VARS["envio"] == "si"){
  if(
$ingreso==$numero){
    echo 

          <p><u><b>Pasaste!</b></u></p>
          <br /><br />
          <p><a href="php.php">volver</a></p>
         '
//aca coincidio//
     
}
  else{
    echo 
'
          <p><u><b>Bardiaste!</b></u></p>
          <br /><br />
          <p><a href="php.php">volver</a></p>
         '
//aca no coincidio//
     
}
}
else{
// El script "empieza" aca!
// genero un numero random...

$random letra();

echo 
'
      <p><b>Por favor ingrese el siguiente número:</b></p>
      <br />
      <p><b><u>'
.$random.'</u></b></p>
      <br />
      <form action="php.php?envio=si" method="post">
      <input name="numero"  type="hidden" value="'
.$random.'" />
      <input name="ingreso" style="text-transform:uppercase"; type="text" size="25" />
      <br /><br />
      <input type="submit" value="Enviar" />
      </form>      
     '
;
}
//
// Aca Envia el Formulario como php.php?envio=si ...
?>
</div>
Desde ya, gracias.
__________________
Nuestro amo juega al esclavo // de esta tierra que es una herida
que se abre todos los días // a pura muerte, a todo gramo.
Violencia es mentir.
  #2 (permalink)  
Antiguo 30/07/2006, 03:31
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
La idea vá encaminada pero tu script es violable (que todos lo son en diferente medida ).

El error que estás cometiendo es proporcionar el código de seguridad en el mismo código fuente, se puede crear un script para acceder a él directamente, tanto dónde lo muestras como en el campo oculto, es indiferente.

Lo que debes hacer es:
- primero, utilizar una variable de sesión para conservar el código de seguridad para tu uso, no mostrarlo en el código fuente.
- segúndo término ese código fuente deberías proporcionarlo mediante una imágen con el mismo fin --no darlo para su fácil acceso-- para ello ocupa la librería GD.
- tercero, ocupar una fuente "distorcionada" y propia para generar dicha imágen... esas imágenes con las letras chuecas, de colores y con fondos que crean ruido no son de a gratis, claro, hay que mantener el enquilibrio para que se legible.

En las FAQ tienes un código para generar dichas imágenes de seguridad que podrás utilizar ya sea implementandolo ó analizándolo para crear el tuyo propio (allá tú ).

El nombre técnico es "CAPTCHA" --imágenes CAPTCHA-- por si necesitas buscar mayor información.

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 30/07/2006, 06:09
Avatar de c0lo  
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires
Mensajes: 281
Antigüedad: 12 años, 4 meses
Puntos: 1
Bueno muchas gracias por los consejos , me voy a poner con eso.

Saludoss!!
Graciass
__________________
Nuestro amo juega al esclavo // de esta tierra que es una herida
que se abre todos los días // a pura muerte, a todo gramo.
Violencia es mentir.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:44.