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 aconsejéis 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:
Using php Syntax Highlighting
<?
session_start();
if (($_SESSION['autentificado'] != "SI") || ($_SESSION['loginActivo'] != $_SESSION['loginURL'])) {
//si no existe, envio a la página de autentificacion
// header("Location: autentificacion.php");
echo'<script language=Javascript> location.href="http://Autentificacion/autentificacion.php"; </script>';
//ademas salgo de este script
exit();
}
?>
session_start();
if (($_SESSION['autentificado'] != "SI") || ($_SESSION['loginActivo'] != $_SESSION['loginURL'])) {
//si no existe, envio a la página de autentificacion
// header("Location: autentificacion.php");
echo'<script language=Javascript> location.href="http://Autentificacion/autentificacion.php"; </script>';
//ademas salgo de este script
exit();
}
?>
Coloreado en 0.020 segundos, usando GeSHi 1.0.8.4
En 'seguridad.php' lo que hago es controlar si el login que llega está autenticado y si es el mismo que tiene activa la sesión en el navegador, (si está autenticado lo compruebo al principio, al conectarse el usuario a la base de datos con el siguiente script):
Using php Syntax Highlighting
<?
//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");
}
?>
//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");
}
?>
Coloreado en 0.010 segundos, usando GeSHi 1.0.8.4
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