PHP 4.1.0
Par Armel FAUVEAU, lundi 10 décembre 2001 à 20:24 :: Actualités PHP :: #1435 :: rss
Enfin ! La sortie de la version 4.1.0 de PHP vient d'être confirmée. Après 5 Release Candidate, cette nouvelle version finie donc par voir le jour. A noter que dans l'immediait, seule la version Unix (source) est dispo. Mais la section downloads du site officiel de PHP devrait bientôt proposer cette version également pour Windows.
Consultez le Release Annoucement pour en savoir plus sur les évolutions de cette version.
Voici l'annonce traduite :
Après un long processus QA, PHP 4.1.0 est enfin sorti. Vous pouvez le télécharger sur http://www.php.net/downloads.php !
PHP 4.1.0 inclut beaucoup d'améliorations importantes :
- Une nouvelle interface d'entrée en général (voir plus bas)
- Perfomance grandement accrue en général
- 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.
- 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ûre que vous utilisez seulement des extensions intégrées à PHP 4.1.0.
- Support "Turn-Key" de la compression des sorties
- *ENORMEMENT* de corrections et de nouvelles fonctions
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 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.
Ce qui suit concerne une description du nouveau mécanisme d'entrée. Pour une liste complète des changements voir plus bas à la fin de cette section (Changelog).
Sécurité : Nouveau mécanisme d'entrée
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 *gère* les anciens mécanisme d'entrée des anciennes versions. D'anciennes applications devraient bien fonctionner sans modification.
Maintenant que nous avons çà derrière nous, Let's move on :)
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 :
<?php
if (authenticate_user()) {
$authenticated = true;
}
...
?>
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. Paraissant comme un exemple simple, en réalité, bien des applications terminées sont exploitable par ce dysfonctionnement (NDT:je dirais plutôt que c'est une erreur de conception et de programmation).Tandis qu'il est parfaitement possible d'écrire du code PHP sécurisé, nous sentions le fait que PHP permet, 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.
Évidemment, la grande majorité du code PHP dans le monde se repose sur l'existence de cette fonctionnalité, cependant nous n'avons pas de plans pour la retirer de PHP ni maintenant ni à moyen terme, mais nous avons décidés d'encourager les utilisateurs de ne plus l'utiliser tant que faire se peut.
Afin d'aider les utilisateurs à construire des applications PHP avec REGISTER_GLOBALS sur off, nous avons ajouté quelques nouvelles variables spéciales, variables qui peuvent être utilisé à la place des anciennes variables globales. Il y a 7 nouveaux tableaux spéciaux :
$_GET - contient les variables passer par la méthode GET
$_POST - contient les variables passer par la méthode POST
$_COOKIE - contient les variables HTTP cookie
$_SERVER - contient les variables serveur (par ex. REMOTE_ADDR)
$_ENV - contient les variables d'environnement
$_REQUEST - Une fusion des variables GET. POST, COOKIE. En d'autres mots toutes les informations qui arrive de l'utilisateur. Et d'un point de vue purement sécurité, ne sont pas sûre.
$_SESSION - contient toutes les variables HTTP enregistrées par le module de gestion de session
Maintenant, entre autre le fait que ces variables contienne 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 global. Par exemple :
function example1()
{
print $_GET["name"]; // fonctionne, 'global $_GET' n'est pas nécessaire!!
}
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ûre que cela vous simplifiera l'écriture de nouveaux codes.Une autre astuce est que le faite de créer de nouvelles entrées dans $_SESSION va automatiquement les enregistrer comme variables de session, comme si vous auriez appelé session_register(). Cet astuce est limitée uniquement au module de gestion de session - par exemple, créer de nouvelles entrés dans $_ENV ne va pas executer un put_env() implicite.
PHP 4.1.0 garde la variable REGISTER_GLOBALS à ON par défaut. C'est une version de transition, et nous encourageons les auteurs d'applications, spécialement les applications publics qui sont utilisés 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 cette transition plus aisée.
Dans la prochaine version "demi majeur" 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 toujours le mettre à ON.
Note: Certains de ces tableaux ont d'anciens noms, p.e. $HTTP_GET_VARS. Ces noms fonctionnent toujours, mais nous encourageons les utilisateurs de changer vers le nouveaux noms, plus court et automatiquement globales.
Remerciement à Shaun Clowes (shaun@securereality.com.au) de mettre à jour ce problème et de l'avoir analysé.
Release Annoucement
PHP 4.1.0 (Unix)







Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Vous pouvez soumettre un commentaire en remplissant le formulaire ci-dessous. Toutes les contributions font l'objet d'une étape de modération par notre équipe.
Le code HTML dans le commentaire sera affiché comme du texte, les adresses internet seront converties automatiquement.