Raphaël Angleraux, CTO d’Icodia nous présente une des particularités de la plateforme d’hébergement Cloud d’Icodia : le Wrapper PHP.

Il s’agit d’un applicatif développé par notre pôle R&D qui agit en amont de l’interpréteur PHP, afin de sécuriser et d’optimiser le traitement des scripts PHP, et par conséquent de vos sites et applicatifs web.

Qu’est-ce que PHP ?

PHP est un langage de programmation libre, principalement utilisé pour le développement de sites web dynamiques et d’applicatifs web.

De nombreux outils très populaires sont développés en PHP, comme par exemple les CMS WordPress ou Drupal, mais aussi des moteurs de e-commerce tels que Prestashop ou Magento, et de nombreux autres outils tels que des frameworks, des CRM (Outils de gestion de relation clients) ou des ERP (Progiciels de gestion intégrés) …

Aujourd’hui, près de 80% des sites web utilisent ce langage de programmation côté serveur.

Fonctionnement de PHP :

PHP est un langage qui est exécuté au niveau du serveur d’hébergement qui, grâce à un interpréteur PHP (parser), permet de générer du code et des données destinées à être interprétés par un navigateur Web.

Fonctionnement de PHP

Quelles sont les forces de PHP ?

PHP est un langage extrêmement simple pour les débutants, mais avec de nombreuses fonctionnalités avancées pour les experts.

Il est multiplateforme, il peut fonctionner sur différents environnements serveur (Linux, Windows, MacOS), ce qui permet une grande portabilité des sites et applicatifs.

Son atout majeur est la richesse de son catalogue de fonctions et son extrême polyvalence.

En effet, il permet aussi bien d’intervenir sur le système de fichiers (arborescence et contenus) que sur la gestion des sessions utilisateurs, il est capable de générer différents types de code (HTML, XHTML, CSS…) ou de fichiers (Images, PDF…), d’interagir avec des systèmes de bases de données ou d’envoyer des e-mails…
Un véritable couteau suisse !

Le Wrapper PHP : sécurisation ET performances

Le Wrapper PHP, développé par Icodia est un processus père, qui agit en amont de l’interpréteur PHP.
Son rôle est de sécuriser et optimiser le fonctionnement de PHP, et ceci de façon transparente pour les développeurs et utilisateurs.

Pour gagner en performances, la fondation PHP, porteuse du projet, a peu à peu diminué les possibilités de sécurisation côté langage, comme notamment la fonction « safe mode », qui visait à limiter les exécutions de scripts si ces derniers ne possédaient pas des droits adéquats.
La sécurisation des sites et applicatifs Web développés en PHP reposent alors sur la sécurisation au niveau du serveur en lui-même. Cette sécurisation est souvent mal configurée, et peu évolutive.

Ainsi, afin de protéger leurs plateformes, de nombreux hébergeurs désactivent des fonctions de PHP, en limitant alors les possibilités du langage, les temps d’exécution de ce dernier et la charge mémoire des scripts utilisateurs.

Icodia a toujours conçu ses solutions d’hébergement mutualisé comme des produits haut de gamme, devant apporter à ses clients un environnement extrêmement sécurisé tout en conservant un niveau de performances optimal. Il fallait donc trouver une solution qui permette cela, tout en protégeant la plateforme d’hébergement mutualisé.
C’est ainsi que le pôle R&D d’Icodia a conçu le projet Wrapper PHP, dont la première version a été mise en production en mai 2016.

Fonctionnement du WrapperPHP

Le Wrapper PHP est un applicatif compilé en C++ qui agit en amont de l’interpréteur PHP et intervient sur deux volets de l’activité du module PHP : la sécurisation et l’optimisation.

Sécurisation :

Le Wrapper PHP a pour mission principale la sécurisation du langage. Pour ce faire, il analyse les scripts envoyés à l’interpréteur PHP ainsi que le contenu retourné par ce dernier.
Il est capable d’identifier des comportements douteux de certains scripts PHP et d’en bloquer l’exécution. Il peut, par exemple, reconnaître des tentatives d’injections SQL dans des requêtes de type GET ou POST.
Lorsqu’il a analysé un comportement malveillant, le Wrapper PHP empêche le traitement du script et remonte une alerte au NOC (Network Opération Center, ou Centre des Opérations Réseau) et au support Icodia qui peuvent procéder le cas échéant à un complément d’audit.

Optimisation :

Le langage PHP étant, comme nous l’avons évoqué, un outil très polyvalent et multi-plateformes, son exécution n’est pas toujours optimisée, notamment en termes de consommation de ressources serveur.
Le Wrapper PHP analyse en continu la charge du serveur d’hébergement. Cela lui permet d’adapter en temps réel les traitements des scripts devant être traités par le parser, en fonction de différents critères, comme les ressources disponibles du serveur ou la version de PHP utilisée par le site ou l’applicatif.

Par exemple, si le serveur dispose de ressources mémoire suffisante à un moment donné et qu’un process un peu gourmand en ressources est appelé, le Wrapper PHP peut outrepasser les limitations de mémoire allouée au script par PHP et lui permettre d’être exécuté malgré tout.
De même, il peut permettre à un script de dépasser le temps de traitement autorisé par la configuration de PHP si ce dernier ne consomme que très peu de ressources CPU.

Le Wrapper PHP permet à Icodia de proposer des fonctionnalités de PHP qui sont généralement désactivées ou limitées sur les services d’hébergement cloud, tout en assurant un niveau de sécurisation et de stabilité optimal de la plateforme (et donc des sites et applicatifs hébergés).
Ainsi, des paramétrages tels que  « memory_limit », « max_execution_time », « socket_timeout » etc. sont particulièrement flexibles sur nos abonnements d’hébergement Cloud.

 

Les atouts du Wrapper PHP :

Sécurité :

Le Wrapper PHP permet avant tout de sécuriser de manière active les scripts (et donc les sites Internet) contre une grande partie des failles les plus connues, ainsi que des tentatives d’exploitation de failles, parmi lesquelles :

  • les injections de variables ;
  • les tentatives d’exploitation de codes d’échappement ;
  • les attaques par dépassement de mémoire ;
  • les attaques par charge redondante ;
  • les dépassement de droits ou chemins par l’exploitation de failles ;
  • les injections de code ;
  • les envois de fichiers malveillants ;
  • les vols de sessions ;
  • etc.

Flexibilité :

Le Wrapper PHP permet d’apporter une grande souplesse aux services d’hébergement mutualisés proposés par Icodia.
En effet, les clients peuvent modifier en temps réel et sans redémarrage d’aucun composant du serveur, la version du langage utilisée par un site ou les fichiers de configuration de PHP. Ainsi, le site hébergé ne souffre d’aucune interruption de service.
Il adapte l’ensemble de ses comportements aux différentes versions de PHP : un parser PHP 5.6.x ne consommant par exemple pas les mêmes ressources qu’un parser 7.1.x, en termes de mémoire notamment.

Transparence :

Les temps d’exécutions du Wrapper PHP sont extrêmement rapides (inférieurs à une milliseconde), son action est quasi transparente afin de ne pas ralentir l’expérience utilisateur. Ce paramètre est crucial, car il s’agit de ne pas ajouter de délai aux temps d’exécution des scripts par l’interpréteur PHP, intimement liés au TTFB (Time to First byte), indicateur stratégique pour les mesures de performances d’un site web.

Fiabilité et conformité du code :

La fiabilité du code du Wrapper PHP, développé en C++, est éprouvée depuis plusieurs années maintenant et a démontré sa robustesse et son efficacité.
Enfin, il a été développé selon les principes de respect de la confidentialité, il va par exemple remonter des comportements d’attaque d’un serveur et permettre aux routeurs de la plateforme de blacklister une IP malveillante, mais n’enregistrera pas les autres flux de données.

Optimisation :

Le Wrapper PHP permet également d’optimiser l’exécution du code PHP par l’implémentation d’un système de cache d’exécution de php.

À la fois élément de sécurisation et d’optimisation du langage PHP, le Wrapper PHP constitue un véritable élément différenciateur des solutions d’hébergement mutualisés proposées par Icodia par rapport au propositions concurrentes.