Ensuite, la directive session.entropy_file a été ajoutée et permet de définir une source externe à PHP qui ajoutera du bruit aléatoire aux identifiants de session afin de les rendre encore plus difficile à prédire et ainsi limiter les risques de vol de session.

Sous UNIX, les valeurs possibles pour session.entropy_file sont /dev/urandom ou bien /dev/arandom en fonction de la disponibilité des fichiers correspondant lors de la compilation.

Si vous désirez désactiver cette fonctionnalité, ce qui n'est pas recommandé, il faudra donc définir une valeur vide pour cette directive.

Cette directive est complétée par session.entropy_length qui permet de définir le nombre d'octets devant être lu dans le fichier externe, par défaut 32.

Il est à noter que cette directive était déjà disponible sous Windows depuis PHP 5.3.3.

Toujours en ce qui concerne les sessions, les directives suivantes ont été ajoutées :

  • session.upload_progress.enabled
  • session.upload_progress.cleanup
  • session.upload_progress.prefix
  • session.upload_progress.name
  • session.upload_progress.freq
  • session.upload_progress.min_freq

Elles permettent de contrôler la façon dont PHP peuple la variable $_SESSION avec les informations relative à la progression de l'envoi d'un fichier vers le serveur HTTP, afin par exemple d'afficher au niveau du navigateur la barre de progression correspondante.

Afin de contrer les attaques de type HashDOS, la directive de configuration max_input_vars a été ajoutée et permet de définir le nombre d'éléments que les variables $_GET, $_POST et $_COOKIE peuvent contenir au maximum, soit 1000 par défaut pour chacune d'elle.

Attention cependant, Stefan Esser, le créateur de l'extension PHP de sécurité Suhosin, a indiqué à plusieurs reprises que ce mécanisme de protection n'est pas suffisant contre les attaques de type HashDOS, en fonction de la configuration du langage.

Dans un autre registre, la directive enable_post_data_reading a été ajoutée et permet de désactiver le traitement automatique effectuée par PHP sur les données reçues via une requête HTTP de type POST.

Activé par défaut, il peut être pertinent de la désactiver lorsque les données obtenues via ce canal ne doivent pas être modifiées pour pouvoir être utilisées correctement.

Une directive de configuration permettant de désactiver l'affichage des messages d'avertissement relatif aux CRT sous Windows a également été ajoutée et est désactivée par défaut.

Enfin, pour en terminer avec les directives ajoutée, trois directives spécifiques à l'interface en ligne de commande de PHP, aka CLI, ont également été ajoutées :

  • cli.pager qui permet de définir l'utilitaire devant être utilisé pour afficher le flux de sortie par page ;
  • cli.prompt qui permet de définir l'aspect de l'invite de commande ;
  • cli_server.color qui permet d'activer le support de la couleur dans le flux de sortie ;

Il est à noter que ces directives peuvent être modifiée dynamiquement en ligne de commande à l'aide d'une syntaxe spécifique.

Ainsi, le code suivant dans la console de PHP, activée grâce à la commande php -a, permet la modification de l'invite de commande :

php > #cli.prompt=my prompt:
myprompt:

Il est également possible d'exécuter du code dans l'invite de commande, grâce à l'opérateur ` :

php > #cli.prompt=`echo date('H:i:s');`=>
14:00:05=> écho "Mon invite de commande est à l'heure";
Mon invite de commande est à l'heure
14:00:05 php > sleep(55);
14:01:00 php >

Dans un prochain billet, je vous parlerais des directives de configuration qui ont été supprimées de PHP 5.4 pour notre plus grand bonheur.