mirror of
https://github.com/php/web-php.git
synced 2026-03-23 23:02:13 +01:00
193 lines
8.0 KiB
PHP
193 lines
8.0 KiB
PHP
<?php
|
|
$_SERVER['BASE_PAGE'] = 'releases/4_1_0_fr.php';
|
|
include_once __DIR__ . '/../include/prepend.inc';
|
|
site_header("Annonce de publication de PHP 4.1.0", ["lang" => "fr"]);
|
|
?>
|
|
|
|
<h1>Annonce de publication de PHP 4.1.0</h1>
|
|
|
|
<p>
|
|
Après un long processus "QA", PHP 4.1.0 <a href="/downloads.php">est enfin sorti</a>!<br>
|
|
[ <a href="/releases/4_1_0.php">English Version</a> ]
|
|
</p>
|
|
|
|
<p>
|
|
PHP 4.1.0 inclut beaucoup d'améliorations importantes:
|
|
</p>
|
|
<ul>
|
|
<li>Une nouvelle interface d'entrée en général (voir plus bas)</li>
|
|
<li>Perfomance grandement accrue en général</li>
|
|
<li>
|
|
Sous Windows une stabilité et une performance révolutionnaire. Les
|
|
modules serveur multi-thread sous windows (ISAPI, Apache, etc...)
|
|
s'exécute jusqu'à 30 fois plus rapidement sous la charge! Nous
|
|
voulons remercier Brett Brewer et son équipe chez Microsoft pour
|
|
son travail avec nous pour améliorer PHP pour Windows.
|
|
</li>
|
|
<li>
|
|
Gestion des versions pour les extensions. A l'heure actuelle, ceci
|
|
est très peu utilisé, l'infrastructure était mise en place pour le
|
|
support séparé des numéros de versions pour différentes extensions.
|
|
L'effet de bord négatif est que le faite de charger des extensions
|
|
avec une ancienne version de PHP résultait d'un crash, à la place
|
|
d'un message correct et claire. Soyez sûrs que vous utilisez
|
|
seulement des extensions intégrées à PHP 4.1.0.
|
|
</li>
|
|
<li>Support "Turn-Key" de la compression des sorties</li>
|
|
<li><strong>BEAUCOUP</strong> de corrections et de nouvelles fonctions</li>
|
|
</ul>
|
|
|
|
<p>
|
|
Comme certains l'ont noté, cette version est quelque peu historique,
|
|
comme c'est la première fois dans l'histoire que nous incrémentons
|
|
le numéro du milieu !
|
|
Les deux principales raisons à cela sont d'un côté les changements sans
|
|
précédent de la nouvelle interface d'entrée, et de l'autre l'incompatibilité
|
|
des modules dus au support des versions.
|
|
</p>
|
|
|
|
<p>
|
|
Ce qui suit concerne une description du nouveau mécanisme d'entrée.
|
|
Pour une liste complète des changements voir le
|
|
<a href="/ChangeLog-4.php#4.1.0">ChangeLog</a>.
|
|
</p>
|
|
|
|
<hr>
|
|
|
|
<h2>SECURITE: NOUVEAU MECANISME D'ENTREE</h2>
|
|
|
|
<p>
|
|
Avant tout, il est important de signaler que, sans tenir compte de ce
|
|
que vous pourriez lire dans les lignes qui suivent, PHP 4.1.0 <strong>gère
|
|
encore</strong> les anciens mécanismes d'entrée des anciennes versions.
|
|
D'anciennes applications devraient bien fonctionner sans modifications !
|
|
</p>
|
|
|
|
<p>Passsons à la suite mainenant que cela est dit :)</p>
|
|
|
|
<p>
|
|
Pour différentes raisons, PHP qui se repose sur register_globals ON
|
|
(ex. sur les formulaires, les variables serveur et d'environnement
|
|
deviennent partie de la portée globale d'un script [namespace], et
|
|
ce automatiquement) sont très souvent exploitable à des degrés
|
|
divers. Par exemple le code suivant:
|
|
</p>
|
|
|
|
<?php highlight_php('<?php
|
|
if (authenticate_user()) {
|
|
$authenticated = true;
|
|
}
|
|
...
|
|
?>');?>
|
|
|
|
<p>
|
|
Peut être exploitable de la manière suivante, des utilisateurs
|
|
distants peuvent simplement passer 'authenticated' comme variable
|
|
d'un formulaire et même si authenticate_user() retourne false,
|
|
$authentiticated va actuellement contenir true. Ce"la semble etre un
|
|
exemple très simple, mais en réalité, bien des applications PHP
|
|
sont exploitable par ce dysfonctionnement.
|
|
</p>
|
|
|
|
<p>
|
|
Tandis qu'il est parfaitement possible d'écrire du code PHP
|
|
sécurisé, nous sentions que le fait que PHP permette, de manière beaucoup
|
|
trop facile, d'écrire du code PHP non sécurisé n'était pas
|
|
acceptable, et nous avons décidé de tenter un changement très grand
|
|
et de rendre caduque register_globals.
|
|
Evidemment, à cause de la grande majorité de code PHP dans le monde se
|
|
reposant sur l'existence de cette fonctionnalité, nous ne la supprimerons
|
|
jamais, mais nous avons décidés d'encourager les utilisateurs de ne plus
|
|
l'utiliser à chaque fois que cela est possible.
|
|
</p>
|
|
|
|
<p>
|
|
Afin d'aider les utilisateurs à construire des applications PHP avec
|
|
register_globals à Off, nous avons ajouté quelques nouvelles
|
|
variables spéciales, variables qui peuvent être utilisées à la place
|
|
des anciennes variables globales. Il y a 7 nouveaux tableaux spéciaux:
|
|
</p>
|
|
|
|
<ul>
|
|
<li>$_GET - contient les variables passées par la méthode GET</li>
|
|
<li>$_POST - contient les variables passées par la méthode POST</li>
|
|
<li>$_COOKIE - contient les variables HTTP cookie</li>
|
|
<li>$_SERVER - contient les variables serveur (par ex. REMOTE_ADDR)</li>
|
|
<li>$_ENV - contient les variables d'environnement</li>
|
|
<li>
|
|
$_REQUEST - Une fusion des variables GET. POST, COOKIE. En d'autres
|
|
termes toutes les informations qui arrivent de l'utilisateur,
|
|
et qui d'un point de vue purement sécuritaire, ne sont pas sûres
|
|
</li>
|
|
<li>
|
|
$_SESSION - contient toutes les variables HTTP enregistrées par le
|
|
module des sessions
|
|
</li>
|
|
</ul>
|
|
|
|
<p>
|
|
Maintenant, entre autre le fait que ces variables contiennent ces
|
|
informations spéciales, elles sont aussi automatiquement globales
|
|
dans toutes les portées. Cela signifie que vous pouvez y accéder
|
|
de n'importe où, sans avoir à les déclarer en globales. Par exemple:
|
|
</p>
|
|
|
|
<?php highlight_php('<?php
|
|
function example1()
|
|
{
|
|
print $_GET["name"]; // fonctionne, pas besoin de \'global $_GET;\' !
|
|
}
|
|
?>');?>
|
|
|
|
<p>
|
|
va fonctionner très bien! Nous espérons que cela va faciliter la tâche
|
|
durant la migration de vieux code vers le nouveau, et nous sommes sûrs
|
|
que cela vous simplifiera l'écriture de nouveaux codes.
|
|
Une autre astuce est que le fait de créer de nouvelles entrées dans
|
|
$_SESSION va automatiquement les enregistrer comme variables de session,
|
|
comme si vous auriez appelé session_register(). Cette astuce est limitée
|
|
uniquement au module de gestion de session - par exemple, créer de
|
|
nouvelles entrés dans $_ENV ne va <strong>pas</strong> exécuter un put_env()
|
|
implicite.
|
|
</p>
|
|
|
|
<p>
|
|
PHP 4.1.0 doit toujours avoir register_globals mis a On par défaut.
|
|
C'est une version de transition, et nous encourageons les auteurs
|
|
d'applications, spécialement les applications publiques qui sont utilisées
|
|
par une large audience, de changer leurs applications pour fonctionner
|
|
avec un environnement où register_globals est à Off. Il est clair
|
|
qu'ils devraient profiter des nouvelles fonctionnalités fournies
|
|
avec PHP 4.1.0 qui font que cette transition est plus aisée.
|
|
</p>
|
|
|
|
<p>
|
|
Dans la prochaine version "semi majeure" de PHP, de nouvelles installations
|
|
de PHP devrait avoir register_globals mis à Off par défaut. Ne vous en
|
|
faites pas! Les installations existantes, qui ont déjà un fichier php.ini
|
|
qui a register_globals à On, ne vont pas être affectées. Cela vous
|
|
affectera seulement si vous installez PHP sur une nouvelle machine
|
|
(typiquement si vous êtes un nouvel utilisateur), et si vous le désirez
|
|
vous pourrez toujours le mettre à On.
|
|
</p>
|
|
|
|
<p>
|
|
Note: Certains de ces tableaux ont d'anciens noms, exemple : $HTTP_GET_VARS.
|
|
Ces noms fonctionnent toujours, mais nous encourageons les utilisateurs
|
|
de migrer vers le nouveaux noms, plus courts et qui sont des versions
|
|
automatiquement globales.
|
|
</p>
|
|
|
|
<p>
|
|
Les remerciements vont à Shaun Clowes (shaun at securereality dot com dot au)
|
|
pour avoir révélé ce problème et avoir aidé
|
|
à l'analyser.
|
|
</p>
|
|
|
|
<p>
|
|
French translation is available courtesy of Pierre-Alain Joye
|
|
(pierre-alain dot joye at wanadoo dot fr).
|
|
</p>
|
|
|
|
<?php site_footer(); ?>
|