Sécurité · Avancé

Injections : séparer une instruction des données

En une ligne : Chaque endroit où une chaîne de l'utilisateur est assemblée dans une commande est une faille — et la solution, ce sont les paramètres, pas le filtrage.

L'unique principe

Le moteur doit recevoir la commande et les données séparément. Des requêtes paramétrées, des commandes système avec un tableau d'arguments, et des moteurs de templates qui marquent le contenu non sûr. Filtrer les chaînes est une course qu'on perd toujours.

Où ça apparaît

Les bases de données, les commandes du système d'exploitation, les requêtes de bibliothèques, les appels à un moteur de recherche, et aussi dans les adresses construites dynamiquement. Et oui — aussi dans les prompts à un modèle de langage, où le contenu externe peut être interprété comme une instruction.

Défense en profondeur

Permissions minimales pour l'utilisateur de la base de données, afin que même si quelque chose est passé, les dégâts soient limités. Et validation de l'entrée contre un schéma — pas comme substitut à la séparation, mais comme couche supplémentaire qui bloque les entrées absurdes dès le départ.

Pour aller plus loin

Lancez des tests automatiques qui alimentent des entrées inhabituelles dans chaque champ — caractères spéciaux, longueur extrême, encodages différents — et vérifiez que la réponse est une erreur ordonnée et non un comportement anormal. Cela attrape aussi des bugs ordinaires, pas seulement des vulnérabilités.