Il y a maintenant quelques semaines, Rick Regan a découvert un bug assez méchant dans PHP, qui a reçu l'identifiant #53632 et qui est également connu sous le nom de The PHP strtod() denial of service bug.

En étudiant la façon dont le langage gère les nombres à virgule flottante, et plus particulièrement ceux aux alentours de zéro, il a réussi à faire partir le Zend Engine, le moteur qui propulse PHP, dans une boucle infinie à l'aide d'une simple affectation de variable, de la manière suivante :

<?php $d = 2.2250738585072011e-308; ?>

À l'époque, il était donc tout à fait possible de bloquer un serveur web qui utilise PHP en injectant, via par exemple $_GET, cette fameuse valeur.

Évidemment, suite au rapport de bug, ce dernier été corrigé très rapidement, grâce aux versions 5.2.17 et 5.3.5 du langage, que je ne peux que vous encourager à utiliser si vous n'avez pas encore fait la mise à jour.

Et encore plus évidemment, beaucoup de gens ont encore dit que, décidément, PHP était vraiment un langage de merde conçu par des abrutis et que tout les développeurs du monde devraient arrêter de l'utiliser au profit de vrais langages tel que Python, Ruby ou bien encore Java.

Sauf qu'en l'occurrence, ces gens auraient mieux fait de se taire...