Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/09/2006, 13:04
finikini
 
Fecha de Ingreso: abril-2005
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
es seguro este sistema de login?

acabo de hacer un sistema de login de usuarios y me preguntaba si es un script seguro y si ahy otra forma mas simple de hacerlo o que sea mas eficiente ya que uso dos querys y lo ideal seria usar uno, pero no se me ocurre otra forma de evitar los intentos de conexion masivos para sacar el pass

aca les dejo el codigo:

Código PHP:
<?php
session_start
(); //// Antes de iniciar una sesion nueva
session_destroy(); // se detruye cualquier session anterior.
if($_POST['conectar']){
    
/// Valores enviados por POST ///////////////////////////////////////
    
$nick $_POST['nick'];
    
$pass md5($_POST['pass']);
    
/////////////////////////////////////////////////////////////////////
    
unset($_POST); // Se destruye el array $_POST que ya no es necesario.
    
    
if(eregi("^[-_A-Z0-9]{3,20}$",$nick)){ // Se comprueba si el nick es valido.
        /// SQL /////////////////////////////////////////////////////////////
        
include("sql.php"); // Conexion a la BD.
        
$resp mysql_query("SELECT id_usuario,nick,pass,intentos FROM usuarios WHERE nick='$nick' LIMIT 1;",$conexion);
        
/////////////////////////////////////////////////////////////////////
        
if(mysql_num_rows($resp) == 1){ // Si existe tal usuario ...
            
$row mysql_fetch_assoc($resp);
            if(
$row['intentos'] < 5){ // ... se comprueba si tiene menos intentos de conexion del maximo permitido y ...
                
if($row['pass'] == $pass ){ // ... se comprueba la contrseña del usuario con la contrseña enviada. 
                    
session_start(); // Inicio de sesion.
                    /////////////////////////////////////////////////////////
                    
$_SESSION['inicio'] = time();
                    
$_SESSION['id_usuario'] = mysql_result($resp,0,"id_usuario");
                    
$_SESSION['nick'] = mysql_result($resp,0,"nick");
                    
/////////////////////////////////////////////////////////
                    
mysql_query("UPDATE usuarios set u_conexion='$_SESSION[inicio]', intentos=0 WHERE nick='$nick' LIMIT 1");
                    
/////////////////////////////////////////////////////////
                    
header("Location: ../index.php");
                } else { 
// si la contrseña no coincide, se aumenta los intentos en +1.
                    
mysql_query("UPDATE usuarios SET intentos=intentos+1 WHERE nick='$nick' LIMIT 1");
                    echo 
"Error: Contraseña incorrecta";
                }
            } else { echo 
"Error: Demasiados intentos de conexion"; } // Supera el maximo de intentos permitidos.
        
} else { echo "Error: ".$nick." no existe en la BD"; } // Si no existe tal usuario.
    
} else { echo "Error: Nick no valido."// Nick no valido.
} else { header("Location: ../index.php"); }
?>

Última edición por finikini; 29/09/2006 a las 14:33