Retour au blog
Sécurité9 min

OWASP A03:2021 – Injection

SQL, NoSQL, OS Command... Stoppez les injections qui compromettent vos bases de données.

Équipe Eurinhash

Analyste en Cybersécurité

Le Danger de l'Injection

L'injection se produit lorsqu'une application envoie des données non fiables à un interpréteur en tant que partie d'une commande ou d'une requête. Les données malveillantes trompent l'interpréteur pour qu'il exécute des commandes involontaires ou accède à des données sans autorisation.

Types d'Injection Courants

  • SQL Injection (SQLi) : Manipuler des requêtes SQL pour extraire toute la base de données.
  • Command Injection : Exécuter des commandes système (ex: ls, rm -rf) sur le serveur.
  • LDAP/NoSQL Injection : Manipuler des filtres d'annuaire ou des requêtes MongoDB.

Comment l'éradiquer ?

L'unique solution fiable est de séparer les données du code.

  1. Requêtes paramétrées (Prepared Statements) : Utilisez toujours des interfaces qui séparent la commande des paramètres.
  2. Validation stricte des entrées : Utilisez une "liste blanche" (allowlist) de caractères autorisés.
  3. Échappement des caractères : Si les requêtes paramétrées sont impossibles, échappez les caractères spéciaux de l'interpréteur ciblé.
-- VULNÉRABLE
SELECT * FROM users WHERE username = 'admin' OR '1'='1';
 
-- SÉCURISÉ (via driver application)
SELECT * FROM users WHERE username = ?; -- Le '?' recevra la donnée brute sans exécution possible

[!WARNING] Utiliser de simples expressions régulières pour filtrer les mots "SELECT" ou "DROP" est insuffisant. Les attaquants utilisent des encodages variés pour contourner ces filtres basiques.

Restez en veille

Inscrivez-vous pour recevoir nos prochaines analyses techniques directement dans votre terminal.