Traitez les erreurs de manière sécurisée
Les bonnes pratiques de développement mettent en avant la nécessité de traiter les erreurs. En effet, les utilisateurs de votre site pourraient obtenir des messages d’erreur qui renvoient une mauvaise image de votre site. La fameuse erreur HTTP 404, qui correspond à une ressource non trouvée, en est la première illustration.
Ensuite, au-delà de la piètre expérience utilisateur que vous proposez, les messages d’erreur non traités sont une brèche de sécurité majeure, qui peut renseigner des utilisateurs malveillants sur la structure de votre base de données ou bien encore sur la technique employée pour protéger les mots de passe..
Dans ces conditions, comment traiter les erreurs de manière sécurisée ?
Dans un premier temps, pensez à ne pas dévoiler d’informations sensibles comme des informations sur le système ou des éléments d’un compte utilisateur dans vos messages d’erreur ;
Ensuite, la plupart des environnements de développement le permettent, utilisez les messages d’erreur ou les pages d'erreur par défaut ;
Assurez-vous également que la manipulation des contrôles de sécurité ne donne pas, par erreur, accès à l’application à vos utilisateurs.
Utilisez des journaux de log
Un ou plusieurs fichiers de log au format prédéfini sont générés en cours d'exécution et conservent des messages informant au minimum sur :
L’horodatage de l'événement ;
L’estimation de la sévérité de l'événement ;
L’identité du compte concerné ;
L’adresse IP associée avec la requête ;
Le résultat (échec ou réussite) ;
Une courte description.
Cette fonctionnalité est intéressante à plus d’un titre :
L’administrateur dispose de statistiques sur l'utilisation d'un système ;
Le développeur peut déceler des défaillances et corriger les bugs ;
L’utilisateur peut utiliser un journal afin de revenir sur une panne et refaire les opérations perdues.
Dans le cadre d’une approche de développement sécurisée, je vous recommande de garder traces des événements liés :
Aux erreurs d’authentification ;
Aux accès — erreurs de contrôles d’accès, tentatives de connexion avec des données de session expirées ou invalides, échecs de connexion TLS à l’administration du site.
En résumé
Dans la dernière partie de ce cours, je vous propose maintenant de nous intéresser à l'importance d’implémenter une stratégie globale de sécurité dans vos applications.