Ya tenia conciencia de que por medio de las url's se pueden definir variables php (dependiendo si tu configuración php decidiste que no lo permita) pero en los casos donde se necesita crear paginas "dinámicas", por ejemplo un perfil (profile?id=3) digamos nos mostraría el perfil del usuario con el id 3, toda su información... avatar, nombre, apellido, etcétera. Pero digamos que en otro caso tenemos lo siguiente...
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)
<?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
<?php
$admin = false;
if ($_GET['password'] == 'secreto') {
$admin = true;
}
[...]
if ($admin) {
// Acciones que solo puede realizar el administrador conociendo la contraseña
[...]
}
?>
Definir la variable de una forma más global.
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.