-----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/[email protected]
IRC: chat.unixtech.be:6667 - #unixtech
NNTP: news.gname.org - gmane.org.user-groups.linux.unixtech

Répondre à