Ver Mensaje Individual
  #20 (permalink)  
Antiguo 15/07/2005, 12:26
DarioDario
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
Cita:
Iniciado por cyborg
pero tambien te ha cambiado el campo de la pass. no se loguearia no? aunque no sufrieras el ataque
No, no se logearia...

Cita:
Iniciado por turco_7
Para mi la mejor forma de evitar esto y si las funciones agregan o no una barra ... se me ocurre preguntar si los resultados que encontro son iguales a lo que habia en la caja de texto, caso contrario, no le permito el acceso, si vos me pones ' OR 1 = '1 no importa, vos si queres podes escribir una subconsulta, que nunca va a poder acceder, repito, ya que cuando termino de hacer la consulta, pregunto si los valores que encontre son los mismos que venian del FORM .. es simple... con eso no tengo problema ..saludos ...
codigo de ejemplo:

Código PHP:
if ($_POST["usuario"]!="" && $_POST["clave"]!=""){ 
    
$usuario $_POST["usuario"]; 
    
$clave $_POST["clave"]; 
    
$clave md5($clave);
    
$sql "SELECT * FROM usuarios where usuario='$usuario' and clave='$clave'"
    
$res mysql_query($sql) or die("Error en la consult SQL: " mysql_error()); 
    if(
mysql_num_rows($res) > 0){ 
        list(
$usr,$pwd) = mysql_fetch_array($res)
     if(
$usr == $usuario and $pwd == $clave){
        
//session_start(); 
        
$_SESSION["autentificado"]= "SI"
        print 
"<meta http-equiv=Refresh content=\"3 ; url=panel.php\">"
      }else{
                echo 
"El usuario o clave es incorrecta";
       }
   }else{ 
        print 
"<meta http-equiv=Refresh content=\"3 ; url=index.php?errorusuario=si\">"
    } 

Asi evitaria de que inyecten codigo SQL ... saludos
Esta bien, tienes razon, tu forma es otra variante de seguridad, pero lo que yo esta tratando hacer, era dar un ejemplo practico de addslashes().
Yo lo que hago tambien es cuando se espera un valor entero verificarlo y tratar de convertirlo, si no se logra la converción es seguramente un ataque. Tambien trato de que los campos tengan un valor maximo de entrada, por ejemplo, el nombre de usuario lo seteo a 10 caracteres, y verifico cuando llega que no sea mayor a 10, si lo es no prosigo y aborto. En fin hay muchisimas cosas más para verificar. Saludos, y espero que participe mas personas que este thread es interesante.