10 façons d’amĂ©liorer la sĂ©curitĂ© de votre PHP

Vous utilisez PHP depuis des annĂ©es et il semble fonctionner parfaitement, mais ne vous ĂȘtes-vous jamais demandĂ© ce que vous pouviez faire de plus pour sĂ©curiser vos scripts ? Les failles de sĂ©curitĂ© devenant de plus en plus courantes et destructrices, il existe un certain nombre de bonnes pratiques que vous pouvez mettre en Ɠuvre dans vos scripts pour vous assurer qu’ils sont Ă  l’abri des pirates de tous niveaux. Voici dix façons d’amĂ©liorer la sĂ©curitĂ© de vos scripts PHP dĂšs aujourd’hui, en commençant par les plus Ă©videntes et en passant par des domaines un peu moins courants qui pourraient vous Ă©viter un dĂ©sastre Ă  l’avenir.

10 ways to improve your PHP security

1) Modifier les ports par défaut

La majoritĂ© des serveurs web fonctionnent sur les ports 80 et 443. Si votre application PHP est exposĂ©e sur l’un de ces ports, vous devez les changer dĂšs que possible en quelque chose comme : 1141 (443) et 1142 (80). Il y a plusieurs raisons de changer ces ports. PremiĂšrement, il est beaucoup plus difficile pour un intrus d’y accĂ©der, car la plupart des gens supposent que ces deux numĂ©ros ont dĂ©jĂ  Ă©tĂ© utilisĂ©s. DeuxiĂšmement, cela Ă©vite les conflits avec d’autres services fonctionnant sur ces ports. Enfin, certains fournisseurs d’accĂšs peuvent bloquer les ports 80/443 s’ils ne sont pas dĂ©jĂ  utilisĂ©s, mais pratiquement tous les fournisseurs d’accĂšs autorisent le trafic sur les ports 1143 ou plus sans restriction. Le fait de changer vos ports par dĂ©faut ne signifie pas que vous ne devez pas mettre en place de mesures de sĂ©curitĂ© ; elles doivent toujours ĂȘtre mises en Ɠuvre, mais sur des canaux HTTP/HTTPS non standard.

2) Utilisez HTTPS Ă  tout moment

De nombreux sites Web n’utilisent pas le protocole HTTPS, alors qu’ils devraient le faire. Il est important que votre site web soit sĂ©curisĂ© Ă  tout moment en vous assurant que vous utilisez HTTPS au lieu de HTTP. Cela permettra de protĂ©ger vos donnĂ©es et vos informations personnelles en les cryptant afin qu’elles ne puissent pas ĂȘtre lues par d’autres personnes via une connexion non sĂ©curisĂ©e. Le protocole HTTPS est particuliĂšrement important pour les sites qui traitent des donnĂ©es sensibles, comme les numĂ©ros de carte de crĂ©dit ou les informations mĂ©dicales ; si quelqu’un intercepte votre trafic, vos donnĂ©es peuvent facilement ĂȘtre compromises.

3) Utilisez des mots de passe forts

Il n’y a aucune raison de ne pas utiliser des mots de passe forts qui contiennent un mĂ©lange de chiffres, de lettres et de caractĂšres spĂ©ciaux. Un bon mot de passe doit ĂȘtre long (idĂ©alement plus de 12 caractĂšres) et contenir au moins un chiffre et un symbole. Et n’oubliez pas : De nos jours, il est souvent plus sĂ»r d’utiliser deux mots de passe diffĂ©rents que d’utiliser une phrase de passe. Veillez Ă  utiliser des mots de passe diffĂ©rents pour vos diffĂ©rentes connexions. Si quelqu’un dĂ©couvre vos informations de connexion pour un site, il peut facilement compromettre toute votre vie numĂ©rique en quelques clics. Pensez aux gestionnaires de mots de passe comme LastPass et KeyPass, qui vous permettent de stocker tous vos mots de passe dans une base de donnĂ©es chiffrĂ©e qui se synchronise sur tous vos appareils.

4) DĂ©sactiver l’exĂ©cution de code Ă  distance

Si l’exĂ©cution de code Ă  distance est activĂ©e, les attaquants peuvent exĂ©cuter du code arbitraire sur votre serveur. Cette fonction doit ĂȘtre dĂ©sactivĂ©e Ă  tout moment. En raison de ses consĂ©quences potentielles, l’exĂ©cution de code Ă  distance doit ĂȘtre l’une de vos principales prioritĂ©s lorsque vous sĂ©curisez une application Web. Assurez-vous que vous avez correctement configurĂ© les paramĂštres pour la dĂ©sactiver. DĂ©sactivez-la pour tous les fichiers Si possible, ne la dĂ©sactivez pas uniquement pour les fichiers .php, mais pour tous les types de fichiers, afin que les attaquants ne puissent pas utiliser d’autres types de fichiers comme portes dĂ©robĂ©es sur votre site. En prime, la dĂ©sactivation de l’exĂ©cution de code Ă  distance rĂ©duira votre exposition aux tĂ©lĂ©chargements Ă  distance et Ă  d’autres types de scripts malveillants chargĂ©s Ă  partir de sources non fiables sur votre site Web. Évaluez les plugins tiers Les plugins tiers sont connus pour ĂȘtre truffĂ©s de failles de sĂ©curitĂ©, car ils ne sont pas soumis aux mesures habituelles de contrĂŽle de la qualitĂ©. Par consĂ©quent, si vous ne dĂ©veloppez pas vous-mĂȘme des fonctionnalitĂ©s personnalisĂ©es, les plugins tiers sont trĂšs susceptibles de contenir des erreurs qui pourraient causer des problĂšmes de sĂ©curitĂ© sur votre site. Envisagez d’utiliser uniquement des modules de haute qualitĂ© ayant des antĂ©cĂ©dents de maintien d’un code sĂ©curisĂ© ou un code propriĂ©taire dĂ©veloppĂ© en interne par des dĂ©veloppeurs expĂ©rimentĂ©s ayant un haut niveau d’expertise en matiĂšre de sĂ©curitĂ© des applications Web. VĂ©rifiez les options de configuration du serveur Web Bien qu’elles ne soient pas nĂ©cessairement liĂ©es directement aux vulnĂ©rabilitĂ©s de PHP, certaines options de configuration d’Apache constituent de bonnes pratiques gĂ©nĂ©rales en termes de sĂ©curitĂ©, car elles limitent ce que les diffĂ©rents processus exĂ©cutĂ©s sur votre systĂšme sont autorisĂ©s ou non Ă  faire.

5) Activez ModSecurity ou un autre WAF

MĂȘme si vous n’ĂȘtes pas un dĂ©veloppeur d’applications Web, l’une de vos principales responsabilitĂ©s en tant que professionnel de la sĂ©curitĂ© de l’information est d’aider les dĂ©veloppeurs Ă  mettre en Ɠuvre des pratiques de codage sĂ©curisĂ©es. C’est pourquoi il est si important que vous vous familiarisiez avec les WAF, ou pare-feu d’applications Web, et que vous appreniez Ă  les activer pour votre organisation. MĂȘme un petit peu de connaissance peut contribuer Ă  rendre votre organisation plus sĂ»re. Par exemple, en activant ModSecurity sur tous vos serveurs Web (et vos Ă©quilibreurs de charge Apache), vous augmentez considĂ©rablement la sĂ©curitĂ© – et la tranquillitĂ© d’esprit – de toutes les personnes concernĂ©es.

6) S’appuyer sur les fonctions de sĂ©curitĂ© intĂ©grĂ©es

De safe_mode Ă  open_basedir, il existe de nombreuses façons d’amĂ©liorer la sĂ©curitĂ© de votre site en tirant parti des fonctionnalitĂ©s intĂ©grĂ©es. Par exemple, si vous crĂ©ez une nouvelle fonction de tĂ©lĂ©chargement de fichiers, utilisez validate_file_name() plutĂŽt que de le faire vous-mĂȘme. En cas de doute, voyez ce que fait WordPress ou un autre framework populaire. Si leur code ne prĂ©sente pas de vulnĂ©rabilitĂ© Ă©vidente, le vĂŽtre n’en prĂ©sentera probablement pas non plus. Ne rĂ©inventez pas ce qui a dĂ©jĂ  Ă©tĂ© Ă©crit. Utilisez les fonctions intĂ©grĂ©es : Il y a tellement de fonctions disponibles pour chaque langage ! Assurez-vous de les apprendre et de les utiliser ! Gagnez du temps en essayant d’Ă©crire quelque chose de compliquĂ© alors que quelqu’un l’a dĂ©jĂ  rĂ©solu pour vous.

7) Ne pas exĂ©cuter les outils d’administration sur les serveurs de production

Bien sĂ»r, l’utilisation de certains outils d’administration peut ĂȘtre pratique sur votre serveur de dĂ©veloppement, mais elle ne peut que vous attirer des ennuis si vous les utilisez sur un serveur de production. Des outils comme phpMyAdmin et Adminer offrent aux pirates potentiels une voie d’attaque qui, avec suffisamment de connaissances et de persistance, peut mener directement Ă  votre base de donnĂ©es. Ne le faites pas. Si vous avez besoin d’un accĂšs distant Ă  votre base de donnĂ©es Ă  des fins de dĂ©veloppement ou de dĂ©bogage, utilisez plutĂŽt un tunnel SSH. Pour les utilisateurs de MySQL qui souhaitent un accĂšs Ă  l’interface graphique, consultez les offres de la pile LAMP telles que PhpMyAdmin Lite ou Adminer ; toutes deux sont des alternatives solides qui offrent de bonnes pratiques de sĂ©curitĂ© des donnĂ©es. Ou mieux encore, conservez l’accĂšs en ligne de commande afin de protĂ©ger complĂštement vos donnĂ©es contre toute intention malveillante en plaçant les connexions cruciales en dehors d’un environnement Web. RĂ©flĂ©chissez bien avant d’autoriser les comptes sans mot de passe : Il peut sembler pratique pour un dĂ©veloppeur de configurer un compte root sans mot de passe sur son poste de dĂ©veloppement local, mais c’est exactement la raison pour laquelle de nombreux professionnels de la sĂ©curitĂ© mettent en garde contre leur utilisation dans des environnements de production. Lorsque les bases de donnĂ©es ne sont pas correctement sĂ©curisĂ©es, toute personne disposant d’informations de connexion peut facilement exploiter les vulnĂ©rabilitĂ©s d’injection SQL et exĂ©cuter des commandes en tant qu’utilisateur de son choix (mĂȘme en tant que root). Pire encore, ces mĂȘmes personnes peuvent potentiellement se frayer un chemin Ă  travers les permissions sudo jusqu’Ă  root, une fois l’accĂšs accordĂ© via les informations de connexion.

8) Vérifiez les bibliothÚques de tiers avant de les utiliser

Si vous utilisez des bibliothĂšques tierces dans votre application, comme celles qui analysent les fichiers tĂ©lĂ©chargĂ©s, il est extrĂȘmement important que vous vĂ©rifiiez d’abord si ces bibliothĂšques prĂ©sentent des vulnĂ©rabilitĂ©s connues. Bien qu’il puisse ĂȘtre plus facile d’utiliser une bibliothĂšque prĂ©-Ă©crite que de passer du temps Ă  Ă©crire votre propre code d’analyse, nous ne pouvons jamais garantir que nous n’introduirons pas de nouvelles vulnĂ©rabilitĂ©s de sĂ©curitĂ© en nous appuyant sur du code externe et nous n’amĂ©liorerons la sĂ©curitĂ© de notre application que si nous vĂ©rifions tout avant de l’intĂ©grer Ă  notre projet. Pour en savoir plus : Comment vĂ©rifier la prĂ©sence de failles de sĂ©curitĂ© dans les bibliothĂšques tierces.

9) Déplacer les fichiers de configuration hors de la racine Web

Ces fichiers peuvent contenir toutes sortes de donnĂ©es sensibles, notamment les mots de passe MySQL. Si un pirate obtient l’accĂšs Ă  ces fichiers par le biais d’une vulnĂ©rabilitĂ© dans votre application, il lui suffit de modifier quelques lignes de code et d’exĂ©cuter une seule commande. Gardez les fichiers de configuration hors de la racine du site Web en les plaçant en dehors du rĂ©pertoire de documents de votre site Web – dans wp-content/config , par exemple. Mieux encore, placez-les sur un tout autre serveur. Si vous utilisez des outils d’intĂ©gration continue comme Gitlab CI ou Github, placez les fichiers de configuration dans un dĂ©pĂŽt privĂ© et ne poussez pas ces dĂ©pĂŽts vers des serveurs publics. Ensuite, mettez en place un processus automatisĂ© qui met Ă  jour les fichiers de configuration chaque fois que vous dĂ©ployez un nouveau code.

10) Maintenez PHP Ă  jour

Maintenir votre code Ă  jour est un moyen infaillible de vous assurer que vous n’ĂȘtes pas vulnĂ©rable aux vulnĂ©rabilitĂ©s connues. Si vous construisez quelque chose Ă  partir de zĂ©ro, essayez d’utiliser Composer pour la gestion des dĂ©pendances ; il peut ĂȘtre intĂ©grĂ© Ă  GitLab CI pour des dĂ©ploiements automatisĂ©s. Si vous travaillez sur un projet existant ou si vous souhaitez ajouter une ligne de code Ă  la fois, n’oubliez pas git diff et git pull requests ; ces fonctionnalitĂ©s permettent de s’assurer facilement que chacun sait ce qu’il fait lorsqu’il met Ă  jour ses environnements ou fichiers locaux. Vous pouvez Ă©galement envisager de crĂ©er un processus exigeant que les personnes rĂ©visent et approuvent les modifications. En fin de compte, le fait de savoir qui a apportĂ© des modifications et quand (et comment) vous aidera Ă  dĂ©tecter les vulnĂ©rabilitĂ©s plus tĂŽt que tard. N’attendez pas que quelqu’un vous dise qu’il y a un problĂšme, prenez des prĂ©cautions de maniĂšre proactive ! Et en parlant de notifications : ne les ratez plus jamais avec les notifications de problĂšmes de GitLab ou les notifications de Mattermost.

Écrit par

Matthieu Robin Hidora
Matthieu ROBIN
07/04/2022

Matthieu Robin est le CEO de Hidora, un leader stratĂ©gique expĂ©rimentĂ©, un ancien administrateur systĂšme qui a gĂ©rĂ© et configurĂ© plus d’environnements manuellement que quiconque sur la planĂšte et aprĂšs avoir compris que cela pouvait ĂȘtre fait en quelques clics a créé Hidora SA. Il intervient rĂ©guliĂšrement lors de confĂ©rences et aide les entreprises Ă  optimiser leurs processus mĂ©tier grĂące Ă  DevOps. Suivez-le sur Twitter.

Recevoir nos actualités