Foros del Web » Programando para Internet » PHP »

Es Seguro mi Sistema de Login??

Estas en el tema de Es Seguro mi Sistema de Login?? en el foro de PHP en Foros del Web. hola amigasos! Acabo de realizar el sistema de Login para un sistemita en Php, pero necesito saber si es "seguro". Me dan una mano? Una ...
  #1 (permalink)  
Antiguo 06/02/2010, 12:31
 
Fecha de Ingreso: noviembre-2007
Mensajes: 191
Antigüedad: 16 años, 6 meses
Puntos: 0
Es Seguro mi Sistema de Login??

hola amigasos!
Acabo de realizar el sistema de Login para un sistemita en Php, pero necesito saber si es "seguro".
Me dan una mano?

Una funcion para evitar el sqlInjection:
Código PHP:
/** Escapa la cadena, verificando si "Comillas maginas" esta activo o no. */
function mysql_escape($cadena
{
    
$cadena trim($cadena);
    if(
get_magic_quotes_gpc() != 0
    {
        
$cadena stripslashes($cadena);
    }
    return 
mysql_real_escape_string($cadena);





Este es el formulario donde pones el email y la contraseña:
Código PHP:
echo "<form action=\"scripts/iniciar-sesion.php\" method=\"post\">
                          <table align=\"center\" width=\"700\" border=\"1\">
                            <tr>
                                <td colspan=\"2\"><p align=\"center\"><b>Inicia Sesion:</b></p></td>
                            </tr>
                            <tr>
                                <td>Email:</td>
                                <td><input type=\"text\" name=\"email\" /></td>
                            </tr>
                            <tr>
                                <td>Password:</td>
                                <td><input type=\"password\" name=\"password\" /></td>
                            </tr>
                            <tr>
                                <td colspan=\"2\"><p align=\"center\"><input type=\"submit\" value=\"Enviar\" /></p></td>
                            </tr>
                        </table>
                    </form>"


El codigo que verifica si la contraseña el usuario son correctos:

Código PHP:
//Para utilizar las variables de sesion:
session_start();

//incluyo el archivo de conexion a la base de datos:
include '../db/base-de-datos.php';
//incluyo para poder usar la funcion de escape:
include '../funciones/funciones-generales.php';
include 
'../funciones/funciones-sql.php';

//Variables que vienen del formulario limpiadas de caracteres incorrectos:
$email mysql_escape($_POST['email']);
$password mysql_escape($_POST['password']);
$password md5($password);



//VALIDAMOS LOS FORMULARIOS:
//Controlamos que los campos obligatorios no esten vacios:
if ($email == '')
{
    
$_SESSION['mensaje'] = "Debe completar el campo Email.<br / > <br /> 
    <input type= \"button\" value=\"Volver atrás\" onclick=\"history.back()\">" 
;
    
header ("Location: ../mensaje.php");
    exit();
}
elseif(
$password == '')
{
    
$_SESSION['mensaje'] = "Debe completar el campo Password. <br / > <br /> 
    <input type= \"button\" value=\"Volver atrás\" onclick=\"history.back()\">" 
;
    
header ("Location: ../mensaje.php");
    exit();
}
else
{
    
//SI TODO ESTA BIEN:    
    
    //El query que se ejecutara en la base de datos:
    
$cadena "select * from usuarios where emailUsuario = '$email' and passwordUsuario = '$password'";
    
$ejecutarSql mysql_query($cadena);    

    
//Ejecuto el Query:
    //Si el usuario y password son correctos:
    //fetch_array retorna los datos de las filas en un vector, sino da false.
    
if ($fila mysql_fetch_array($ejecutarSql)) 
    {
        
//Pongo la variable de sesion en True asiganandole el ID del usuario actual.
        //Con el Id de usuario podemos actualizar o ver cualquier dato del usuario.
        
$_SESSION['usuarioRegistrado'] = $fila['idUsuario'];
        
        
//Si el usuario es administrador...
        
if($fila['esAdminUsuario'] == 1)
        {
            
$_SESSION['usuarioAdmin'] = $fila['idUsuario'];
            
//Redirecciono al panel de control
            
header ("Location: ../admin.php");
            exit();
        }    
    }
    else
    { 
        
$_SESSION['mensaje'] = "Error! Usuario o contraseña incorrecta. <br /> <br / > <br /> 
        <input type= \"button\" value=\"Volver atrás\" onclick=\"history.back()\">" 
;
        
header ("Location: ../mensaje.php");    
    }    


Por ultimo para verificar si el usuario es Administrador hago asi:
Código PHP:
    //Esto me dice si es Usuario Registrado...
    
$idUsuarioRegistrado $_SESSION['usuarioRegistrado'];
    
    
//Esto me dice si el usuario registrado es Administrador...
    
$idAdmin $_SESSION['usuarioAdmin'];    
    
        
//SI EL USUARIO ES ADMINISTRADOR:
    
if($idAdmin)
    {


    }
    
//SI EL USUARIO NO ES ADMINISTRADOR:
    
else 
    {

         } 

Un abrazo a todos!
  #2 (permalink)  
Antiguo 06/02/2010, 13:29
 
Fecha de Ingreso: diciembre-2009
Mensajes: 30
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Es Seguro mi Sistema de Login??

Yo lo veo bien, pero aun asi, intentaria restringir el numero de caracteres a utilizar, por ejemplo la contraseña entre 6 y 12 caracteres, lo otro es, no podras ningun sha1() o md5()?
  #3 (permalink)  
Antiguo 06/02/2010, 13:48
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 9 meses
Puntos: 66
Respuesta: Es Seguro mi Sistema de Login??

Solo un apunte,

Si el login no es correcto, yo destruiría la sesión y no llenaría las variables de sesión con mensajes.

Saludos.
  #4 (permalink)  
Antiguo 06/02/2010, 15:24
Avatar de mark_ant0n  
Fecha de Ingreso: enero-2009
Ubicación: Comitan, Chiapas mx
Mensajes: 388
Antigüedad: 15 años, 3 meses
Puntos: 6
Respuesta: Es Seguro mi Sistema de Login??

me parece bien, pero si te falta algo de encriptación con md5, y si crea las sesiones despues de que el usuario noi es correcto.
__________________
"Diseño de software a la medida"

http://www.sadhoc.com
  #5 (permalink)  
Antiguo 06/02/2010, 17:12
 
Fecha de Ingreso: noviembre-2007
Mensajes: 191
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Es Seguro mi Sistema de Login??

Muchas gracias a todos los que me contestaron!
Les cuento, las contraseña ahora, al guardar en la base de datos, se guardan en MD5.
Cuando hago el login, convierto a MD5 la contraseña enviada por el formulario y la comparo con la contraseña codificada en la base de datos.

Por otro lado no entiendo eso de destruir la sesion si es usuario o contraseña incorrecto.

Tengo un archivo: "mensaje.php" que lo unico que hace es:
Cita:
echo "$_SESSION['mensaje'];
Entonces, "mensaje.php" lo utilizo para comunicar al usuario los errores o cualqueir mensaje que necesite saber.
Es incorrecto poner los mensajes en variables de session? Porque tambien podria pasarle el mensaje por GET...

Que opinan?
Muchas gracias!!

PD: en cuanto me comenten lo ultimo, edito el primer post asi queda el sistema de login listo para quien necesite usarlo.
  #6 (permalink)  
Antiguo 15/04/2010, 18:57
 
Fecha de Ingreso: marzo-2009
Mensajes: 73
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Es Seguro mi Sistema de Login??

alomejor es seguro contra SQLiyection pero justo ahora estoy investigando sobre impersonation attack.

Cita:
The most crucial piece of information for an attacker is the session identifier, because this is required for any impersonation attack. There are three common methods used to obtain a valid session identifier:
■Prediction
■Capture
■Fixation
http://phpsec.org/projects/guide/4.html
que opinan ustesdes? el login del compañero es seguro?
  #7 (permalink)  
Antiguo 16/04/2010, 06:56
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Es Seguro mi Sistema de Login??

Lo que te dicen arriba es que si el login es incorrecto ¿cual es el objetivo de crear la sesión?
  #8 (permalink)  
Antiguo 16/04/2010, 07:08
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: Es Seguro mi Sistema de Login??

Cita:
Iniciado por mark_ant0n Ver Mensaje
me parece bien, pero si te falta algo de encriptación con md5, y si crea las sesiones despues de que el usuario noi es correcto.
mejor con sha-1 o sha-1 de 512

Etiquetas: login, seguro, sitemap
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 11:23.