-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Fabian Vilers wrote:
|>Il faut bien dire qu'on ne peux pas toujours changer les
|>anciens codes, et que la doc n'est vraiment pas claire! :-(
|
| En effet, les variables passées avec script.php?variable=valeur ne sont plus
| accessibles directement. Il faut passer par $_REQUEST["variable"]. Afin de
| faire une transition en douceur, on peut imaginer l'utilisation de
| extract($_REQUEST) au début de chaque script "ancienne mode".

Et la raison de cette modification est très clairement la sécurité.
En effet, avec register_globals=On, toutes les variables passées par POST ou 
GET sont implicitement
définies, ce qui permet d'influer sur du code PHP mal écrit. Or comme PHP ne 
force et ne permet
(malheureusement, à mon sens) pas la déclaration statique de variables, c'est 
vite arrivé.

if ($foo == "foo") {
~   $x = 1;
}

if ($x) {
~   // ...
}

Dans le code ci-dessus, il manque la définition d'une valeur par défaut pour $x 
-- en effet, si $foo
!= "foo", $x n'est pas initialisé, sauf à "null" par défaut.

Or, si quelqu'un appelle ce script PHP en passant une valeur à $x: 
http://machin.pas.net/script.php?x=1
alors $x ne vaut pas implicitement "null" mais bien "1".

Enfin, soit, il vaut bien mieux explicitement extraire les variables passées 
par POST ou GET:
$x = $_POST['x'];
$y = $_GET['y'];
$z = $_REQUEST['z'];

- --
~  -o) Pascal Bleser     http://linux01.gwdg.de/~pbleser/
~  /\\ <[EMAIL PROTECTED]>       <[EMAIL PROTECTED]>
~ _\_v The more things change, the more they stay insane.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)

iD8DBQFCiK3wr3NMWliFcXcRApkWAKCknE+zNdHcVr0nZntrY3BxNIgeDACcConb
A2jCnmlVIHYJdntFOVCms+c=
=UMlj
-----END PGP SIGNATURE-----
_______________________________________________________
Linux Mailing List - http://www.unixtech.be
Subscribe/Unsubscribe: http://www.unixtech.be/mailman/listinfo/linux
Archives: http://www.mail-archive.com/linux@lists.unixtech.be
IRC: chat.unixtech.be:6667 - #unixtech
NNTP: news.gname.org - gmane.org.user-groups.linux.unixtech

Répondre à