Retour à la liste des fiches

La sécurité des pages codées en PHP

Classé dans la catégorie : Informatique / Solutions digitales

La sécurité des pages codées en PHP

Pour rappel, le PHP est un langage de codage créé par Rasmus Lerdorf il y a maintenant 15 ans et qui est largement utilisé pour la création de site web dynamiques.

Dans cette fiche pratique, vous trouverez des informations concernant l'audit de sécurité d'un projet codé en PHP.

Le référentiel de sécurité

Liste des risques et vecteurs

Dans le cas d'une attaque, les risques sont multiples. Il peut en résulter la lecture, la modification ou une destruction des données du serveur.

Le risque peut également toucher le serveur et engendrer un arrêt de celui-ci, ou en détourner ses ressources.

Tout ceci peut amener à ternir l'image de l'entreprise : modification du contenu du site internet, divulgation de documents confidentiels...

Les vecteurs d'attaque sont multiples : XSS, CSRF, injections... pour en savoir plus, consultez le document de l'OWASP, voir plus loin.

La matrice de sécurité

Cette matrice permet de visualiser les rapports entre les risques pour l'entreprise et les vecteurs d'attaque :

  DoS Destruction Image
XSS    
CSRF
Redirection  

Les références

Concernant les standards de sécurité applicables aux systèmes d'information, il y en a plusieurs comme l'OWASP, l'ISO 27002, le PCI... il est intéressant de s'appuyer sur ces standards pour élaborer et suivre une ligne de conduite.

Le top 10 de l'OWASP

Tous les ans, l'OWASP liste les 10 attaques les plus utilisées. En voici les principales qui touchent la programmation :

  • Les injections
  • XSS
  • Session et identification
  • Accès direct aux objets
  • CSRF
  • Restriction d'URL
  • Redirections

Consultez le fichier OWASP Top 10 - 2013 ( en français). Vous y trouverez la liste complète des risques, leurs explications et les moyens d'y remédier.
Voir le fichier OWASP Top 10 - 2017 (en).

Méthode et outils

  1. Il faut prendre les points du référentiel
  2. Trouver les points d'entrée
  3. Fouiller le code source
  4. Valider manuellement les points

Il est possible de s'appuyer sur des outils comme Grep ou Tokenizer. Le point de vue de Damien Seguy :

Grep

C'est un programme en ligne de commande de recherche de chaînes de caractères.

  • Rapide, efficace
  • Trouve trop

Tokenizer

Les fonctions tokenizer fournissent une interface au tokenizer PHP interne au moteur Zend. Par l'utilisation de ces fonctions, vous pouvez écrire vos propres outils PHP d'analyse ou de modifications, sans avoir à vous soucier de la spécification du langage au niveau lexical.

  • PHP, sémantique
  • Implique le tri et la reconstruction

Conclusion

Il est conseillé de rédiger son propre référentiel, en s'appuyant sur les existants, il sera ainsi adapté à votre application en particulier, en fonction du domaine d'application, de l'environnement métier...

Convertissez ensuite ce référentiel en code à éviter, et à recommander ; un guide des bonnes pratiques à suivre.

Les problèmes d'un auditeur est le manque de normalisation du code (plusieurs codeurs, évolution du code...). Donc, vérifiez vous-même ce code, et faites des vérifications croisées entre codeurs, vous aurez ainsi une autre vision de votre propre code et les automatismes de codage n'en seront que meilleurs.

Liens

 

Si vous souhaitez participer à cette rubrique en soumettant des articles, ou des liens, n'hésitez pas...

 

Les dernières actualités de la prévention des risques professionnels

Les derniers produits des risques professionnels