OnLy GoD caN JuDgE
13 Apr
J’ai mis ce post à jour, n’hésitez pas à me faire des retours dessus si j’ai oublié des choses.
La nouvelle mouture de la plateforme star du Web est en cours de préparation : PHP 6 est en vue ! Pourquoi, comment, quelles seront les nouveautés ? Découvrez avec nous ce que le PHPGroup, mené par Rasmus LERDORF et Andrei ZMIEVSKI nous préparent !
A l’heure de la mondialisation il n’est pas rare pour des grosses entreprises d’avoir des équipes de développement partout dans le monde. C’est notamment le cas du célèbre portail Yahoo ! qui utilise massivement PHP (99% du site est en PHP). Au niveau de la diversité des équipes technique cela implique une grande diversité dans la gestion des langues. C’est dans ce cadre que Rasmus Lerdorf, le créateur de PHP, qui travaille chez Yahoo! a été interpellé par ses équipes chinoises sur le support d’unicode. Ce support leur permettrait de mettre en place des solutions compatibles avec leur langue. C’est suite à cette demande que les principaux responsables du PHP Group se sont réunis pour planifier les différentes évolutions de PHP 6. Au niveau des évolutions on compte :
Grâce à sa compatibilité avec UNICODE, PHP 6 pourra être utilisé partout dans le monde et permettra à vos applications de supporter n’importe quel alphabet international. PHP n’ayant pas été prévu pour fonctionner en respectant la norme UNICODE il est nécessaire de réaliser un gros travail de fond sur les différentes strates de PHP :
L’exemple ci-après utilise les fonctions des manipulations de chaînes de caractères printf() et strlen() . Sans le support UNICODE, ces fonctions considèrent qu’un caractère est stocké sur un seul octet, ce qui pose problème lorsque l’on manipule des caractères spéciaux ou accentués en UTF-8.
<?php
// Déclarations (ce fichier PHP est édité en utf-8)
$names = array();
$names[] = ‘le bien être’;
$names[] = ‘le bien etre’;
$str = “Texte : %s (%d caractères)”;
// PHP5 : Décalage du au ê
// PHP6 : Gère l’utf8
foreach ($names as $name) {
printf($str, $name, strlen($name));
}
/*
PHP 5 :
Texte : le bien être (13 caractères)
Texte : le bien etre (12 caractères)
PHP 6 :
Texte : le bien être (12 caractères)
Texte : le bien etre (12 caractères)
*/
Dans notre exemple le ‘ê’ de être est encodé sur deux octets. Nous pouvons remarquer qu’en PHP5, ce caractère compte pour deux la fonction strlen() renvoie 13 caractères au lieu de 12 pour la chaîne contenant le caractère ‘ê’, encodé sur deux octets. Avec PHP6 et son support UNICODE, ce caractère est bien considéré comme un seul caractère dans les deux cas.
Avant la version PHP 4.2, la valeur par défaut de la directive de configuration register_globals, dans le fichier de php.ini, était à On. On pouvait alors référencer la valeur login reçue par un formulaire avec la variable globale $login.
Mal employée, cette fonctionnalité facilitait l’apparition de problèmes de sécurité, puisque le visiteur pouvait injecter directement des variables dans l’espace du développeur.
Depuis PHP 4.2, cette fonctionnalité est désactivée par défaut. Avec register_globals désactivé, une variable envoyée par un formulaire sous le nom login ne sera plus accessible directement avec $login. Pour relire ce champ, il faudra alors utiliser la variable $_REQUEST[’login’] ($_GET[’login’] ou $_POST[’login’] renverra le même résultat suivant la méthode employée pour envoyer le formulaire).
Avec PHP 5 il était possible de réactiver register_globals, avec PHP 6 ce ne sera plus possible.
Les anciennes versions de PHP embarquaient par défaut un mécanisme destiné à protéger l’utilisateur des injections SQL. PHP filtrait alors toutes les entrées utilisateur (paramètres HTTP reçus en GET, en POST ou via les cookies) et ajoutait une barre oblique inverse (caractère \) devant les apostrophes, les guillemets et le caractère nul.
Ce comportement a été supprimé car il rendait complexe la gestion des données (il faut les gérer différemment selon qu’elles viennent de l’utilisateur ou d’autres sources) et entraînait une baisse légère de performances pour ceux qui n’en ont pas besoin.
Avec PHP 5 il était possible de réactiver les magic_quotes, avec PHP 6 ce ne sera plus possible.
La directive de configuration safe_mode influe beaucoup sur les accès aux fichiers. À chaque accès, PHP vérifie que le propriétaire du fichier auquel vous voulez accéder est bien le même que l’utilisateur en cours.
Bien que cette directive de configuration apporte certains plus en terme de sécurité il ne faut pas croire qu’elle soit totalement fiable. Pour cette raison le PHP Group a décidé de la supprimer. On conseillera l’utilisation de la directive de configuration open_basedir pour optimiser la sécurité de ses applications.
PECL est un dépot d’extension PHP. A la différence du dépot PEAR, PECL ne contient que des extensions PHP écrites en C (par opposition à PEAR qui contient des bibliothèques PHP écrites en PHP).
Par défaut PHP intègre un certain nombre d’extensions dans son packaging natif. Pour des raisons de performances et de volume toutes ne sont pas dans le package par défaut. Il conviendra donc d’aller chercher celles dont vous aurez besoin. Bien que peu connu le dépot PECL offre un grand nombre d’extensions intéressantes pour des besoins spécifiques.
A ce titre certaines extensions de PHP moins utilisées migrent vers PECL et d’autres viennent de PECL pour se greffer dans le package de base.
XML Reader offre un parseur XML simple à utiliser basé sur SAX et XML Writer offre une API pour écrire des fichiers XML. Ces deux extensions permettent de manipuler des fichiers XML bien plus facilement. Elles seront intégrées à la distribution native de PHP 6.
PDO (PHP Data Object) est la principale nouveauté de PHP 5.1. Cette extension vous apportera un confort d’utilisation et une abstraction plus importants que les anciennes fonctions natives propres à chaque SGBD. L’approche objet de PDO vous permettra de plus d’étendre les fonctions d’accès à votre base facilement et de manière transparente.
<?php
try {
$dbh = new PDO($dsn, $user, $pass);
} catch (PDOException $e) {
die( “Erreur ! : ” . $e->getMessage() );
}
// Insertion d’un enregistrement
$sql = “INSERT INTO auteur (login) VALUES (’roms’)”;
$dbh->exec($sql);
// Lecture d’enregistrements
$sql = “SELECT login FROM auteur”;
$resultat = $dbh->query($sql);
while ($row = $resultat->fetch()) {
print_r($row);
}
// Fermeture de la connexion
$dbh = NULL;
Afin de pousser à l’utilisation de cette interface commune les vieilles extensions PHP seront déplacées vers PECL. Ainsi il ne sera plus possible de faire appel à mysql_connect() avec le paquet d’installation par défaut.
Prévu pour PHP5.0 et finalement retiré, les espaces de noms arrivent en PHP6 ! Cette approche montre bien le souhait du PHPGroup de rendre PHP 6 encore plus ouvert aux applications de grande envergure ou aux applications qui sont montées sur plusieurs briques indépendantes.
Souvent, le développeur est confronté à des problèmes de recouvrement : deux variables, deux fonctions ou deux classes ayant le même nom, qui entrent en conflit. Les espaces de noms permettent d’éviter ce problème en proposant une séparation de chaque brique en paquetage dont l’environnement sera protégé. Ainsi, la sécurité et l’intégrité des applications seront améliorées.
Le cache d’op-codes est un moyen immédiat d’optimiser les performances globales d’une application. Il est adapté à la plupart des développements PHP et intervient dans la couche “basse” de PHP, c’est à dire entre la lecture du code PHP et son exécution.
Voici quelques conseils en vrac pour mieux anticiper la migration de PHP5 à PHP6 :
Source :Cyruss Blog
3 Apr
Ce livre blanc s’adresse aux développeurs, chefs de projets, décideurs et architectes qui souhaitent répondre aux questions suivantes :
la plate-forme PHP rivalise-t-elle avec .NET et J2EE ?
Quelle est son architecture technique ?
Combien d’entreprises l’utilisent-elle ?
Peut-on développer des services web et des applications client serveur avec PHP ?
Est-il possible d’interfacer SAP et Lotus Notes avec PHP ?
Quels sont les projets critiques qui recourent à cette technologie ?
etc. Chiffres clés (25 études Forrester, Gartner, etc. compilées), schémas techniques (2), captures d’écrans (8), exemples de code (6), témoignages d’entreprises (15) : tous les éléments sont réunis pour faire de ce livre blanc un véritable outil de travail.
Sommaire :
Fiche d’identité de PHP
PHP en chiffres
Les atouts de PHP pour l’entreprise
Architecture technique
Une plate-forme qui s’ouvre aux problématiques d’intégration.
PHP, J2EE et .NET : plus complémentaires que concurrents
L’écosystème PHP
Ce qu’en pensent les entreprisesTélécharger d’ici livre-blanc-php-en-entreprise-v4.pdf
3 Feb
En effet, en dehors des chaînes de caractères Unicode, il ne semble pas y avoir beaucoup d’évolutions. Que nenni ! PHP 6 n’apporte certes pas beaucoup de fonctionnalités, mais par contre va modifier certains comportements qui feront de cette version, une bombe atomique !
Par bombe atomique, je n’entend pas parler d’un super-truc-génial qui va révolutionner le monde, mais bien d’un changement de comportement qui sera générateur de beaucoup de problème et ouvrira les portes de l’anarchie numérique pour le bon plaisir des pirates.
Effectivement, PHP 6 va supprimer purement et simplement les magic_quotes, qui, je vous le rappelle, sont désactivées par défaut dans les versions 5, mais que tout le monde s’empresse de réactiver par souci de compatibilité et de sécurité.
Actuellement, peu de personnes ne se soucie des problèmes d’injection SQL car sans le savoir (ou pire, par fainéantise) les magic_quotes les en protège en partie. Je n’ai pas fait d’enquête, mais j’estime que 80% des développeurs PHP ne font pas attention aux problèmes d’injection SQL. Cela veut donc dire que sans une meilleure communication, les personnes qui vont passer au PHP6 vont ouvrir des failles de sécurité larges comme des A380.
PHP 6 devrait-il donc s’accompagner d’un permis de développer obtenu après un contrôle des connaissances dans le domaine de la sécurité ? Non, je pense tout simplement que PHP 6 mettra un temps infiniment long à s’imposer (jamais ?) car les hébergeurs ne voudront pas prendre le risque de le déployer.
Comme vous pouvez le constater, cet article n’est pas un tutorial, mais sert de point d’introduction à une série d’articles dont l’objectif sera de vous expliquer les différents problèmes de sécurité des applications PHP et comment se préparer au passage vers PHP 6.
Source : PHPfrance