Este código lo saque de la pagina desde donde tome la información a esta vulnerabilidad. (Te explican otras vulnerabilidades, muy interesante.. No se si se permite publicar el link)
Código
<?php if ($_GET['password'] == 'secreto') { $admin = true; } [...] if ($admin) { // Acciones que solo puede realizar el administrador conociendo la contraseña [...] } ?>
Bueno en este código bastaría con que x usuario entre a la pagina que tiene este script, digamos que esta pagina se llama "page" entonces el "atacante" pondría "page?admin=1" y podría ingresar como un administrador.
La solución sería
Código
Definir la variable de una forma más global.
<?php $admin = false; if ($_GET['password'] == 'secreto') { $admin = true; } [...] if ($admin) { // Acciones que solo puede realizar el administrador conociendo la contraseña [...] } ?>
Bueno la idea no era hacer una guía, pero acá va mi problema...
mi duda viene de si se pueden hacer lo mismo con sessiones, ya probé en mi script y no veo cambios pero no estoy totalmente seguro. En la misma pagina desde donde vi esta información dice...
"Transferir parámetros en direcciones URL (por ejemplo http://domain.tld/script.php?id=1) es una forma común de pasar argumentos a scripts. Sin embargo, siempre debe ser consciente de que estos argumentos pueden ser establecidos a voluntad por el usuario. Esto significa que su contenido no debe considerarse digno de confianza. Lo mismo se aplica a los datos transmitidos a través de HTTP-post y cookies.
Esto es importante cuando se redirige de un script a otro y se transmiten parámetros en el URL o como cookie. El nuevo script no puede considerar estos parámetros como fiables y tiene que comprobarlos de nuevo. A menudo es más fácil usar las funciones de sesión de PHP. Los datos que se han comprobado y almacenado en la sesión ahora se pueden clasificar y utilizar como seguros. El usuario no tiene la posibilidad de cambiar el contenido de la sesión directamente.
El identificador de sesión se transmite como parámetro con el URL. Dado que se trata de una cadena generada aleatoriamente, la probabilidad de que un atacante pueda adivinar el identificador de una sesión ajena es extremadamente baja.
Dice "la probabilidad de que un atacante pueda adivinar el identificador de una sesión ajena es extremadamente baja" es decir, probabilidades hay....
Quería saber si esto es así y no tendré que preocuparme en que alguien edite sus sessiones o todo lo contrario.
Ah y ya que estoy... quería saber que es "Lo mismo se aplica a los datos transmitidos a través de HTTP-post y cookies" Me imagino que sería en el caso de las cookies "page?$_COOKIE['cualquier_cosa']=1"
¡Gracias!
Mod: Temas sobre PHP van al subforo de PHP.