Foros del Web » Programando para Internet » PHP »

Problemas de seguridad

Estas en el tema de Problemas de seguridad en el foro de PHP en Foros del Web. Hola, estoy haciendo un programa en php y javascript donde los usuarios tienen que autentificarse para poder entrar. La seguridad la implemento de la siguiente ...
  #1 (permalink)  
Antiguo 31/08/2007, 04:13
 
Fecha de Ingreso: febrero-2007
Mensajes: 138
Antigüedad: 17 años, 9 meses
Puntos: 0
Problemas de seguridad

Hola, estoy haciendo un programa en php y javascript donde los usuarios tienen que autentificarse para poder entrar.

La seguridad la implemento de la siguiente manera:

- Tengo un script llamado 'autentificarse.php' en el que se le pide al usuario su login y contraseña.
- A continuación en un script llamado 'control.php' compruebo si ese login y esa contraseña están incluidas en la BD y:

Código PHP:
       session_start();

    
$_SESSION['autentificado'] = "SI";
    
    
header ("Location: http://localhost/miBD/index.php?login=".$fila['login']."");
        
}else {
    
//si no existe le mando otra vez a la portada
    
header("Location: autentificarse.php?errorusuario=si");



Abro la sesión (session_start()) y guardo una variable en la sesión 'autentificado', que servirá como referencia más adelante para ver si un usuario está autentificado o no. Si lo está lo mando al index, pero si no lo está vuelve a la página 'autentificarse.php'.

- Tengo un fichero llamado 'seguridad.php' que incluyo en todos los script que no quiero que puedan ser abiertos en el navegador poniendo 'http://localhost/miBD/miScript.php?id=1'. El fichero seguridad tiene el siguiente código:

Código PHP:
<?
session_start
();

if (
$_SESSION['autentificado'] != "SI") {
    
//si no existe, envio a la página de autentificacion
    
header("Location: autentificacion.php");
    
//ademas salgo de este script
    
exit();
}
?>
Pero probando cosas me pasa una cosa curiosa, si autentifico a un usuario en el navegador mozilla y abro otra pestaña u otra ventana en ese mismo navegador ya puedo poner 'http://localhost/miBD/miScript.php?id=1' las veces que quiera que consigo abrir el script, aunque sea con otro usuario al que he autentificado, cosa que no creo que sea muy segura.

En cambio si abro por ejemplo el explorer y pongo lo mismo 'http://localhost/miBD/miScript.php?id=1', no me lo abre, sino me aparece el siguiente warning:

Warning: Cannot modify header information - headers already sent by (output started at C:\server\web\miBD\index.php:10) in C:\server\web\miBD\Seguridad\seguridad.php on line 6


¿por que me pasa esto?¿cómo puedo modificar la implementación de seguridad en mi programa para que no pasen estas cosas?¿qué me aconsejais que use como seguridad teniendo en cuenta que el programa se usará en una intranet?

Muchas gracias
  #2 (permalink)  
Antiguo 31/08/2007, 07:31
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
Re: Problemas de seguridad

El tema de la sessiones no la comprendo bien, pero es por browser, si abrís 100 solapas con una sesión iniciada ésta se mantendrá.

Con el tema del error es a que seguramente ya has enviado contenido al browser y una vez que pasa eso no se pueden enviar headers. O sacas la salida que tengas antes de la línea 6 de seguridad (en orden de aparición, puede que este en un include al que incluís antes de seguridad), o cambias el header location por algo como:

Código PHP:
 <? 
session_start
(); 

if (
$_SESSION['autentificado'] != "SI") { 
    
//si no existe, envio a la página de autentificacion 
    
exit("<script>window.location = 'Location: autentificacion.php'</script>"); 

?>
Saludos,
__________________
Mi punto de partida es Que Bueno Lo Nuevo
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:29.