Glossaire

Injection SQL

Qu'est-ce qu'une injection SQL ?

Une injection SQL désigne toute tentative consistant à charger des commandes SQL sur un site Internet afin d'en manipuler les données au niveau du serveur. L'objectif est généralement de voler, de détruire ou de manipuler des données à des fins malhonnêtes. La méthode la plus courante consiste à saisir des commandes SQL dans un formulaire Internet. Il existe cependant de nombreuses autres façons d'injecter du SQL sur un serveur Web : par exemple, ajouter des commandes à une URL, en injecter dans une publication HTTP ou en insérer dans un cookie de navigateur utilisé par un site Internet.

En quoi les injections SQL importent-t-elles ?

Les injections SQL arrivent en tête de toutes les listes OWASP Top 10 depuis plus de 10 ans. De nombreuses applications Web utilisent des bases de données pour stocker et récupérer efficacement les données. Par conséquent, les bases de données contiennent des quantités colossales de données importantes et sensibles, telles que les noms d'utilisateur, mots de passe, dates de naissance, numéros de sécurité sociale, etc.

Les applications Web interagissent avec les bases de données à l'aide de requêtes SQL. En règle général, ces requêtes sont effectuées à l'aide d'entrées sur les pages Web – comme pour les recherches. Cependant, les applications Web mal conçues sont susceptibles d'accepter tout type de requête SQL dans une zone de saisie prévue à la base pour n'accepter qu'un seul type de données, par exemple, le prénom d'un utilisateur. Les malfaiteurs exploitent donc cette faille en saisissant des requêtes SQL dans ces champs afin de récupérer ou de corrompre les données stockées au sein de la base de données.

Ce que vous pouvez faire

Il existe toute une série de techniques pour empêcher les pirates de voler ou de corrompre directement vos données. La plupart d'entre elles consistent à limiter autant que possible la capacité des utilisateurs finaux à saisir des informations ou des commandes pouvant être interprétées par votre serveur Web ou votre base de données. Il est important de noter que ces entrées peuvent provenir de diverses sources, notamment des formulaires d'envoi, des arguments d'URL ou encore des cookies de navigateur.

Vous trouverez ci-dessous quelques-unes des techniques les plus courantes pour lutter contre les injections SQL.

  • Nettoyage. La méthode de protection la plus courante consiste à nettoyer toutes les données fournies par les utilisateurs afin de supprimer les chaînes de caractères qui sont susceptibles d'être exécutées sous forme de commandes SQL par le système ou d'être transmises directement à une base de données SQL. Le nettoyage consiste généralement à remplacer les commandes exécutables trouvées dans ces données par d'autres caractères non exécutables.
  • Filtrage et validation. Toutes les données fournies par les utilisateurs doivent répondre à des exigences strictes en matière de format, de longueur et d'attributs avant d'être validées. Toute présence de commande SQL ou de code malveillant doit être filtrée.
  • Exclusion des paramètres d'URL non sécurisés. Évitez d'utiliser des arguments d'URL, comme dans les modèles objet-relationnel (ORM), pour déclencher des actions au sein des bases de données. Utilisez plutôt une API sécurisée.
  • Limitation de la portée des commandes SQL. Utilisez les commandes LIMIT dans les opérations SQL afin de minimiser la divulgation des données au cas où votre base de données serait touchée par une injection SQL.

Bien que les techniques de codage comme celles énumérées ci-dessus soient importantes, un codage soigneux ne peut à lui seul garantir votre sécurité. Les bibliothèques logicielles tierces, les modifications de code ultérieures par d'autres développeurs ainsi que les techniques d'offuscation récemment découvertes peuvent exposer votre site Web aux attaques par injection SQL. Ajoutez une couche de sécurité automatique grâce au pare-feu Web Application Firewall et vos sites et applications Web seront toujours parfaitement protégés.

Découvrez comment Barracuda peut vous aider

La solution Barracuda Web Application Firewall protège vos applications et données contre tous les types d'attaques par injection SQL. Elle utilise pour cela de puissants modèles de sécurité positive et négative qui permettent d'identifier et de bloquer les attaques (classiques ou par offuscation) visant les bases de données, en veillant à ce que seules les entrées autorisées dans un champ donné soient acceptées.

En savoir plus

Contactez-nous pour savoir comment protéger votre entreprise contre les injections SQL ainsi que des centaines d'autres menaces. Vous pouvez également essayer gratuitement la solution Barracuda Web Application Firewall et lancer une analyse gratuite des vulnérabilités de votre site Web.