Les 12 meilleures pratiques de sécurité pour PHP

Publié: 2021-08-14

La sécurité est un sujet important pour tous les développeurs de logiciels, mais les développeurs PHP sont confrontés à des défis uniques. Dans cet article de blog, nous explorerons les 12 meilleures pratiques de sécurité pour PHP, ainsi que la façon dont vous pouvez les implémenter dans votre code pour aider à garder votre site Web sûr et sécurisé. Vous pouvez toujours faire appel aux professionnels de WebCitz pour gérer vos besoins de programmation PHP !


1. Mettez à jour votre version PHP régulièrement

Assurez-vous que votre version PHP est à jour pour minimiser le risque de failles de sécurité. Les correctifs corrigent souvent les bogues connus, il est donc important que vous en tiriez parti au fur et à mesure de leur publication.

Les pirates informatiques ont déjà commencé à exploiter les dernières failles de PHP. Ceux d'entre vous avec des versions plus anciennes seront vulnérables à leurs intrusions à moins que vous ne changiez votre configuration !

Vous pouvez essayer la version préliminaire, mais les conseillers en sécurité avertissent les entreprises d'éviter les versions préliminaires d'un nouveau logiciel, car elles peuvent encore présenter des failles de sécurité inconnues.

Logo PHP

2. N'exposez pas de données sensibles à Internet via une connexion non cryptée

De nombreux sites Web sont toujours vulnérables car leurs développeurs ont commis une erreur en exposant les informations d'identification de la base de données ou du système de fichiers sur l'Internet public à l'aide d'un protocole FTP non protégé, d'un compte de messagerie sans protection SSL, etc.

Protégez ces fichiers et dossiers en les cryptant avant de les transmettre via une connexion réseau non cryptée avec TLS/SSL.

Graphique de verrouillage de sécurité

3. Protégez-vous contre les attaques par injection SQL

Une vulnérabilité d'injection SQL (Structured Query Language) se produit lorsque l'entrée de l'utilisateur est utilisée dans une requête sans validation appropriée de son type et de son intention, ce qui compromet la fiabilité des résultats affichés par les requêtes suivantes assemblées à partir des chaînes soumises.

Cela semble compliqué, mais tout ce que vous devez savoir, c'est que cette attaque peut exposer les données de votre entreprise et des informations sensibles.

Le meilleur moyen de se protéger contre les attaques par injection SQL est de sécuriser l'entrée, ce qui empêche les pirates d'injecter leur propre code dans le site Web via un champ de formulaire ou une boîte de dialogue. Vous voulez nettoyer toutes les valeurs soumises par l'utilisateur avant de les insérer dans une requête SQL, comme ceci : $input = filter_var($_POST['field'], FILTER_SAnitIZE_STRING); if(!empty($input)){ echo « Vous avez entré : « .$input. »

"; }else{echo 'Veuillez entrer quelque chose';} . Remarquez comment nous avons utilisé empty() pour nous assurer qu'il n'y a pas de champs vides.

Serrures de sécurité d'affilée toutes bleues à part une qui est rouge au centre et déverrouillée

4. Assurez-vous que vous stockez des données sensibles en toute sécurité

Lorsqu'il s'agit de protéger les mots de passe et les informations de carte de crédit, il n'y a pas de place à l'erreur - les enjeux sont trop importants si un pirate informatique accède à ces fichiers ou bases de données contenant ces informations !

Pour minimiser le risque qu'une telle attaque se produise, utilisez toujours un algorithme de cryptage fort lorsque vous stockez des données sensibles dans votre base de données - de préférence avec un cryptage AES 128 bits tel que SHA512_RSA.

Il existe également un logiciel qui facilite la gestion des bases de données cryptées : MySQL Encryption Utilities (MEU). Il est important de noter que MEU ne chiffre que les champs de texte dans les bases de données MySQL, mais c'est suffisant pour la plupart des cas d'utilisation.

personne travaillant sur un rack de serveur

5. Ne réutilisez pas les mots de passe

Réutiliser le même mot de passe encore et encore est un moyen sûr de faire pirater votre compte le plus tôt possible ! Si vous utilisez les fonctions intégrées de PHP pour générer des chaînes de texte aléatoires (telles que rand()), rappelez-vous qu'elles ne sont que de courte durée, alors assurez-vous de les changer au moins tous les quelques mois.

Vous voulez qu'il inclue des lettres majuscules, des lettres minuscules, des chiffres et des symboles. Cela ne fait pas de mal non plus d'avoir des règles plus complexes concernant le moment où une nouvelle chaîne doit également être générée, comme une fois par semaine ou après trois tentatives de connexion avec un mot de passe incorrect. Il existe même des logiciels qui peuvent faire le calcul à votre place !

Champs de connexion nom d'utilisateur et mot de passe

6. Assurez-vous que vos applications ne sont pas vulnérables aux attaques XSS

XSS (Cross-Site Scripting) est une attaque par laquelle un code malveillant est injecté dans un site Web, puis s'exécute sur le navigateur d'un visiteur. Cela peut souvent conduire au vol de cookies ou au piratage de session, ce qui permet aux pirates informatiques d'accéder à toutes vos données sensibles sans avoir à saisir leurs propres informations d'identification, telles que des mots de passe ou des numéros de carte de crédit.

Cette vulnérabilité peut être exploitée en utilisant la validation de formulaire JavaScript sur les pages Web, de sorte que toute entrée saisie par les visiteurs soit exécutée automatiquement via l'actualisation de la page, affichant des hyperliens avec un contenu actif comme des images à l'intérieur et ajoutant des paramètres fournis par l'utilisateur sur des URL dynamiques telles que '? compte=123' etc.

pirate informatique assis au bureau

7. Protégez-vous contre les attaques CSRF

CSRF (Cross-Site Request Forgery) est un type d'attaque dans lequel des commandes non autorisées sont transmises du site de l'attaquant à votre application Web. Cela peut conduire, entre autres, à un piratage de session ou à un vol de cookies.

Cela peut sembler difficile à première vue, mais tout ce que vous avez à faire est de fournir un jeton supplémentaire qui doit être vérifié pour toute action où des informations sensibles pourraient être exposées, comme la connexion au compte d'un autre utilisateur - cela garantira qu'il n'y en a pas qu'un point de vulnérabilité unique et assurez-vous que les comptes automatisés ne sont pas utilisés sur votre site Web.

personne piratant

8. N'oubliez pas les correctifs réguliers !

Cela va souvent sans dire, mais vous devez vous tenir au courant des correctifs apportés aux nouvelles vulnérabilités lorsqu'elles sont publiées par votre fournisseur de système ou votre fournisseur de logiciels.

Vous ne savez jamais quelle faille de sécurité quelqu'un d'autre a trouvée, mais vous n'êtes pas au courant, et il vaut mieux rester informé que de faire pirater votre site Web !

personne piratant avec le mot sécurité derrière eux

9. Ne laissez pas le mode de débogage activé dans les environnements de production

Le code de débogage a souvent des capacités pour permettre des choses comme l'édition de fichiers à distance (à l'aide de fopen()) et la génération de requêtes SQL brutes via mysql_query().

Ils sont parfaits si vous souhaitez générer des traces de pile complètes lorsque des erreurs se produisent, mais cela ouvre des risques de sécurité majeurs sur votre site Web de production. La désactivation de ces fonctions et la suppression de toutes les instances où elles sont utilisées vous feront également gagner beaucoup de temps lorsqu'il s'agira de corriger les bogues !

graphique d'une loupe sur un bug qui se trouve sur un écran d'ordinateur

10. Vérifiez le pare-feu pour les ports ouverts

Il peut être tentant d'appuyer sur « suivant » chaque fois que Windows a terminé d'installer les mises à jour, mais n'oubliez pas de vérifier quels services sont en cours d'exécution et si tout est configuré correctement ou non, ce qui inclut également la mise à jour des pare-feu si nécessaire.

Cela aidera à empêcher les visiteurs indésirables d'entrer si les pirates ne peuvent pas trouver un point d'entrée dans votre système par lequel ils pourraient exécuter leur attaque aussi facilement.

personne regardant un écran d'ordinateur avec un code dessus

11. N'utilisez pas « admin » comme nom de compte

Si vous voulez vous protéger contre l'accès de quelqu'un d'autre à votre site en devinant des mots de passe, essayez d'utiliser un autre nom d'utilisateur, comme « admin » ou autre chose qui n'est pas si évident.

Si quelqu'un essaie d'accéder à votre compte, il aura beaucoup plus de mal à deviner le mot de passe et il est également plus difficile pour les pirates d'exploiter des méthodes de force brute si vous utilisez un nom d'utilisateur inhabituel !

touche sur un clavier avec une empreinte digitale comme touche

12. Restez à jour avec les nouvelles vulnérabilités

Cela peut sembler intimidant au début, mais rester informé des failles de sécurité trouvées par les autres aidera à protéger votre système en cas de fuite.

Cependant, garder une trace de toutes ces mises à jour peut être difficile - heureusement, il existe maintenant de nombreux outils disponibles qui rendent cette tâche plus facile que jamais. L'un de ces outils s'appelle « Debian Long Term Support », qui est conçu pour prendre en charge plusieurs versions du système d'exploitation et toutes sortes de logiciels, y compris les serveurs Web avec PHP.

personne souriant à la caméra tout en utilisant un ordinateur

Conclusion

En conclusion, ce ne sont là que quelques-unes des meilleures pratiques de sécurité que vous pouvez appliquer à votre site Web afin de le protéger. Ce n'est pas toujours facile, mais si vous prenez le temps de faire l'effort, vous serez récompensé par une présence en ligne moins susceptible d'être piratée !