Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/10/2007, 02:53
kero-dono
 
Fecha de Ingreso: octubre-2007
Ubicación: agua dulce, veracruz
Mensajes: 22
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Que utilizar para la seguridad de una pagina

en este caso si quedaria bien usar sessiones.
yo te recomendaria que uses sessiones para alojar la id del administrador y el password del adminsitrador (encriptado)
y tener unas cookies con esos mismos valores.

hacer una funcion que cheque por la id, dle usuario, haga un query a la base de datos y compare el password alojado en la session cone l password alopjado en la base de datos., si la informacion coincide, checar si ese usuario es adminsitrador, ejemplo tener un campo en la tabla usuarios llamado "nivel" donde 1 sea admistrador y 0 sea usaurio nromal. si resulta ser admisnitrador que el script continue, si no es admistrador, avisar que es area restringida y dar un exit; (para que se detenga el parseo del script)

el password en si, te recomiendo que este encriptado en MD5, junto con una salt
con salt me refieor a uan string calculada aleatoriamente.

obiamente tuvieras que alokar en la abla de usarios un campo llamado password (con el password y la salt encriptada en md5) y otro campo con la salt para poder comparar los password cuando ingresen al panel

o si quoeires ahorrarte la parte de la salt, simplemente encrupta dos veces en md5 el password

tu codigo deve verse mas o menos asi:


Código PHP:
function admins()
    {
    
$quien=$_SESSION['id_usuario'];
    
$password=$_SESSION['passusuario'];
    
conectar_base_de_datos();
    
$usuario mysql_fetch_array(mysql_query("SELECT `id`, `password`, `nivel` FROM `usuarios` WHERE `id` = '".$quien."' LIMIT 0, 30"));

    
Mysql_close();
    
$password_real=$usuario['password'];
    if(
$password_real== $password AND $nivel == "1"//tomando que nivel 1 es admin
        
{
        
$autentico="1";
        }else{
    
    Echo 
"acceso restringido a adminsitradores"//advierte que el area es solo para admins
    
Exit;

        }
    }





function 
login($usuario$password)
    {

    Global 
$error_login1$error_login2;    
    
conectar_base_de_datos();
    
$usuario mysql_fetch_array(mysql_query("SELECT `id`, `password` FROM `usuario` WHERE `usuario` = '".$usuario."' LIMIT 0, 30"));
    
Mysql_close();
    
$id =$usuario['id'];

    if (empty(
$id)){

    
$error_login1="1";//el usuario no existe
    
}
    
    
    
$password=md5(md5($password));
 
    if (
$password== $usuario['password']) { 

            
$_SESSION['id_usuario'] = $usuario['id'];
            
$_SESSION['passusuario'] = $usuario['password'];
                        
    
header("Location: admin.php");
    
        
        }else{

            
$error_login2="2";//el password no es correcto. 
    
}    


/* $error_login1, $error_login2 son globals, para que puedan se rusadas fuera de la funcion, por si se desea avisar al usario el error exacto*/
   


    
}


function 
logout()

    {

    unset(
$_SESSION['id_usuario']);
    unset(
$_SESSION['passusuario']);
    
setcookie("id_usuario"$_SESSION['id_usuario'], time() - 1);
    
setcookie("passusuario"$_SESSION['passusuario'], time() - 1);
    
session_destroy();
    
header("Location: index.php");

    }


function 
set_cookie()
    {    
    if (isset(
$_SESSION['id_usuario']) && isset($_SESSION['passusuario']))
    {
        @
setcookie('id_usuario'$_SESSION['id_usuario'], time()+10800);
        @
setcookie('passusuario'$_SESSION['passusuario'], time()+10800);
    }
    }



function 
check_cookie()
    {
    if (isset(
$_COOKIE['id_usuario']) && isset($_COOKIE['passusuario']))
    {
        
$_SESSION['id_usuario'] = $_COOKIE['id_usuario'];
        
$_SESSION['passusuario'] = $_COOKIE['passusuario'];    
    }
    } 


si tienes formularios, donde los usuarios puedan postear cosas en la web, te aocnsejo que sues esta funcion, para desabilitar cualquier codigo que quieran injectar
Código PHP:
function anti_lammers($variable)
    {
        
$variable addslashes($variable);
        
$variable htmlspecialchars($variableENT_QUOTES);
        return (
$variable);
    } 
suponiendo que las funciones las guardas en un archivo llamdo funciones, tu admin.php deve verse asi:

Código PHP:
<?include("includes/funciones.php");
session_start();
set_cookie();
check_cookie();
admins();


echo
"panel de adminstracion...";


?>



-Kerberos^^