Stefan Esser signale un projet de Tainted mode pour PHP, édité
par CORE GRASP.
Le mode teinté consiste à marque les valeurs d'un indicateur de
leur niveau potentiel de corruption. $_GET et $_POST, entre
autres, seraient évidemment marquées. Inversement, des valeurs
sûres, comme une constante, seront marquée comme non-corrompues.
Le niveau de corruption potentiel évolue alors avec les
opérations. Certaines le réduisent, comme les fonctions de
validation, et d'autres l'augmentent, comme combiner une valeur
saine avec une valeur corrompue.
Au final, des fonctions sensibles comme mysql_query peuvent
finalement refuser d'utiliser une requête construire avec trop de
données corrompues.
Cette technique n'est pas sans faille, et pose surtout des
problèmes de performances et de consommation. Mais la sécurité
est souvent à ce prix. A suivre...