Foros del Web » Programando para Internet » PHP »

Problema seguridad

Estas en el tema de Problema seguridad en el foro de PHP en Foros del Web. Hola, estoy realizando una aplicación web en php para la gestión de un centro escolar que en un principio iba a ser para una intranet, ...
  #1 (permalink)  
Antiguo 19/01/2008, 11:09
 
Fecha de Ingreso: febrero-2007
Mensajes: 138
Antigüedad: 17 años, 9 meses
Puntos: 0
Problema seguridad

Hola, estoy realizando una aplicación web en php para la gestión de un centro escolar que en un principio iba a ser para una intranet, pero que se ha decidido sacar a internet.

Como iba a ser para una intranet la verdad es que creo que la seguridad de la aplicación es un poco baja, pido por favor me aconsejeis si está bien este nivel de seguridad o es poco y posibles alternativas. Os cuento, en todos los scripts, al principio hay una llamada a un script llamado 'seguridad.php' que contiene:


Código PHP:
<? 
session_start
(); 


if ((
$_SESSION['autentificado'] != "SI") || ($_SESSION['loginActivo'] != $_SESSION['loginURL'])) {
  
    
//si no existe, envio a la página de autentificacion
    
echo'<script language=Javascript> location.href="http://Autentificacion/autentificacion.php"; </script>';
    
//ademas salgo de este script
    
exit();
}
?>
En 'seguridad.php' lo que hago es controlar si el login que llega está autentificado y si es el mismo que tiene activa la sesión en el navegador, (si está autentificado lo compruebo al principio, al conectarse el usuario a la base de datos con el siguiente script):

Código PHP:
<?
//Sentencia SQL para buscar un usuario con esos datos
$login=$_POST["login"];
$password=md5($_POST["password"]);



$sql "SELECT * FROM usuarios WHERE ((login='".$login."') && (password='".$password."'))";
$result mysql_query($sql$GLOBALS["miConexion"]) or die(mysql_error());


//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa combinación usuario/contraseña


if (mysql_num_rows($result)!=0){
    
//usuario y contraseña válidos
    //defino una sesion y guardo datos
    
session_start();
    
    
$fila mysql_fetch_assoc($result);
       
    
$_SESSION['autentificado'] = "SI";
    
$_SESSION['loginActivo'] = $login;

 
header ("Location: http://index.php?login=".$fila['login']."");
        
}else {
    
//si no existe le mando otra vez a la portada
    
header("Location: autentificacion.php?errorusuario=si");
}
?>
Y esto es todo lo que hago en nivel de seguridad en mi aplicación. Como os dije antes quisiera saber si está bien o es preciso tener más seguridad y posibles alternativas dado que soy nuevo en esto.

Muchas gracias
  #2 (permalink)  
Antiguo 19/01/2008, 14:57
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Re: Problema seguridad

Me parece bien que uses sesiones.... y que encriptes los passwords... no se que mas podrias hacer
__________________
Salu2!
  #3 (permalink)  
Antiguo 19/01/2008, 15:32
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 19 años, 3 meses
Puntos: 2
Re: Problema seguridad

Por ahí metido tienes un problemilla de SQL Injection (http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL) por el cual podrían suplantar la identidad de otro usuario sin mayores problemas.

Por otro lado te recomendaría que estudies algún sistema de sesiones algo más robusto. Yo siempre recuerdo la frase que dice: "Si tu mecanismo de sesiones consiste en el uso de únicamente session_start(), entonces eres vulnerable". Y vaya si resulta cierto... el único inconveniente que tiene un posible atacante en suplantar la identidad de otra persona es obtener el session id almacenado en una cookie del navegador de esta "víctima" (y ni hablar si propagas por GET). Y existen numerosas formas de lograrlo... una vulnerabilidad XSS (http://www.formatoweb.com.ar/blog/category/xss/) que se te escape en el código o un ataque de "session fixation" podría resultar suficiente.

Te recomendaría que le des una leida a un buen artículo introductorio al tema: http://phpsec.org/projects/guide/4.html (en inglés) y luego nos comentas.

Saludos.
__________________
R4DS en español | R4DS en inglés

Última edición por zaqpz; 19/01/2008 a las 16:52
  #4 (permalink)  
Antiguo 19/01/2008, 16:34
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 225
Antigüedad: 17 años, 11 meses
Puntos: 1
Re: Problema seguridad

bueno el amigo ha hablado yo por mi parte usaria doble encriptacionde contraseña coon md5 y sha1 depues arreglaria lo de las sesiones q de por si no entiendo como se puedee hacer sql injection es mas tbn voy a leer ese articulo
  #5 (permalink)  
Antiguo 19/01/2008, 16:38
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 225
Antigüedad: 17 años, 11 meses
Puntos: 1
Re: Problema seguridad

has lo q dijo z yo por mi parte haria doble encriptacion de pass con md5 y sha1 ademas de mejorrar las sesiones haa y tbn leeeria ese articulo pora saber darle mas seguridad a mis scripts
  #6 (permalink)  
Antiguo 19/01/2008, 16:40
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 225
Antigüedad: 17 años, 11 meses
Puntos: 1
Re: Problema seguridad

ups problema de cache en mi pc no se actualizo perdon por la repeticion del mensaje
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 21:50.