Une application ne devrait jamais supposer que tout est sain dans l'environnement des utilisateurs. Cela inclut (mais n'est certainement pas limité à) : la saisie de l'utilisateur, les signaux, les variables d'environnement, les ressources, les communication inter-processus, les mmaps, le répertoire de travail du système de fichiers, les descripteurs de fichier, le nombre de fichiers ouverts, etc.
Vous ne devriez jamais supposer que vous pouvez gérer toutes les formes de saisie invalide qu'un utilisateur peut entrer. Votre application devrait plutôt utiliser un filtrage positif pour seulement permettre un sous-ensemble spécifique que vous jugez sain. Une mauvaise validation des entrées a été la cause de beaucoup découvertes de bogues, spécialement avec les scripts CGI sur le web. Pour les noms de fichier, vous devez être tout particulièrement attentif aux chemins ("../", "/"), liens symboliques et caractères d'échappement de l'interpréteur de commandes.
Perl possède une caractéristique tès sympathique appelée mode "Taint" qui peut être
utilisée pour empêcher les scripts d'utiliser des données externes au programme par un
moyen non sûr. Ce mode vérifiera les arguments de la ligne de commandes, les variables
d'environnement, les informations localisées (propres aux pays), les résultats de
certains appels système (readdir()
, readlink()
, getpwxxx()
) et toute
entrée de fichier.
Précédent | Sommaire | Suivant |
Limiter l'environnement de votre programme | Niveau supérieur | Les conditions de course |
Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.
Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <[email protected]>.
Pour les questions sur cette documentation, contactez <[email protected]>.