| Por: Jorge Villegas | 17/3/03
|
Este capítulo de autentificación es muy simple y no es segura su utilización. Por tanto, no es aplicable en ningún caso. Sólo ilustra la posible metodología a seguir.
Me fundamento en lo siguiente:
Se puede entrar directamente a la aplicación sin digitar el nombre de usuario y contraseña, digitando en la barra de direcciones lo siguiente:
www.desarrolloweb.com/.../autentificacion-php/aplicacion.php?autentificado=SI
Y LISTO, ESTAS DENTRO.
No es nada asomborso darse cuenta de ello. Debería haber más seriedad en la publicación de los artículos.
RESPUESTA
Tienes toda la razón, este manual práctico, por lo menos en sus primeros capítulos, sólo persigue mostrar una metodología y una posible forma de atacar el problema de la autentificación, pero no ofrecer un sistema a prueba de intrusos.
En nuestro afan por hacer fácilmente comprensibles los scripts, para ir complicándolos poco a poco y aprender paso a paso, se nos ha escapado un error que has podido encontrar muy lógicamente, pues es el error típico. Es el "error de libro" que se utiliza para explicar como hacer un sistema seguro.
De todos modos, hemos modificado los scripts para que, manteniendo la misma sencillez, no se pueda acceder tal como planteas en este comentario.
Ahora, en capítulos sucesivos de este manual y tal como pretendíamos originalmente, seguiremos implementando mejoras en el acceso restringido para que cada vez quede más blindada nuestra aplicación contra accesos no permitidos.
Códigos que había antes, donde se puede apreciar el error
Para el que le interese, mostramos a continuación el código que había originalmente y que, efectivamente, tenía un grave agujero de seguridad y además muy básico.
//TOMO VARIABLES DE SESION SOBRE LA AUTENTIFICACION
session_register("autentificado");
//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if ($autentificado != "SI") {
//si no existe, envio a la página de autentificacion
header("Location: index.php");
//ademas salgo de este script
exit();
}
?>
La explicación de lo que pasaba es la siguiente: en este código se accedía a la variable que guarda el control sobre si se había autentificado o no (Variable $autentificado) directamente, sin tener en cuenta que es una variable de session.
Como en nuestro servidor está activa la opción register_globals, la variable pasada por la URL para burlar el mecanismo de seguridad se autodeclara en la página. Entonces, al acceder a la variable $autentificado para saber si está o no autentificado el usuario, se tomaría el valor de la variable de sesion y, si no está por no estar autentificado el usuario, se tomaría el valor de la variable pasada por la URL que justamente guarda el dato del cual la capa de seguridad entiende que sí está autentificado.
Muchas gracias por el comentario y para todos los demás, atentos a próximos capítulos para tratar este tema en profundidad.
| Por: armando rodriguez | 20/5/03
|
| Por: ZarDonkan | 28/5/03
|
| Por: Patricio Villarroel | 03/8/03
|
| Por: Joaquín Delgado | 15/9/03
|
| Por: Hugo De Jesus | 25/2/04
|
| Por: jaime tan | 25/2/04
|
| Por: Juano | 05/4/04
|
Salu2.
| Por: Ing Jose Velasquez | 02/6/04
|
| Por: OSKAR | 18/6/04
|
A mi el ejemplo me parece cojonudo. Estoy empezando con esto y no veo ningún error de los k hablais. Yo cambié la variable autentificado por otra e intenté entrar poniendo lo k decis de aplicacion.php?variable=SI y ni flores, no me dejó entrar. Además, como bien se respondió, la persona k kiera meterse ilegalmente, deberá conocer el nombre de la variable k se le ha puesto al archivo control.php para poder entrar.
Gracias por el ejemplo y por los comentarios.
saludos
| Por: wintermute | 18/1/05
|
| Por: John Sotelo | 18/5/06
|
| Por: Tonini | 09/11/06
|
| Por: icio | 22/11/06
|