L'injection SQL (SQLi) est une vulnérabilité de sécurité web qui permet à un attaquant d'interférer avec les requêtes qu'une application effectue sur sa base de données. Historiquement, c'est l'une des failles les plus anciennes et les plus dévastatrices d'Internet. Lorsqu'une injection SQL réussit, un attaquant peut visualiser des données qu'il n'est normalement pas autorisé à voir.
1. Les différents types d'Injection SQL
Il existe plusieurs variantes d'injection SQL. L'injection SQL classique (In-Band) est la plus courante et la plus facile à exploiter. L'injection SQL aveugle (Blind SQLi), quant à elle, ne renvoie pas de données directement à l'écran. L'attaquant doit poser des questions vrai/faux à la base de données.
2. Stratégies de prévention et de remédiation (OWASP)
- Utilisation de requêtes préparées (Paramétrées) : C'est la méthode de défense la plus efficace. Elle oblige les développeurs à définir d'abord le code SQL.
- Validation rigoureuse des entrées : La validation des entrées permet de s'assurer que seules les données valides pénètrent dans le flux de travail de l'application.
- Principe du moindre privilège : Il s'agit de limiter les droits d'accès du compte de base de données utilisé par l'application web.
La protection efficace contre les injections SQL ne s'improvise pas et nécessite une approche systémique intégrant revues de code, tests de sécurité appliqués (SAST/DAST/IAST) et un WAF.