Injection SQL : définition, conséquences et défense

Mis à jour: 31 août 2026 Temps de lecture: ~

Résumé

L’injection Structured Query Language (SQL) (SQLi) est une technique de cyberattaque consistant à insérer du code malveillant dans des requêtes adressées à une base de données, ce qui peut entraîner l’exposition ou la destruction de données sensibles. Les attaquants exploitent des commandes SQL courantes telles que WHERE, UPDATE, INSERT et SELECT pour rechercher des données cachées, obtenir un accès non autorisé ou cartographier un système en vue de futures attaques. La protection contre les attaques SQLi nécessite des tests de vulnérabilité proactifs et une validation stricte des entrées, comme l’autorisation exclusive de caractères sûrs dans les champs de formulaire.

Fonctionnement d’une attaque par injection SQL

Une injection de langage de requête structuré (SQL) est une forme d’attaque. Un hacker s’interpose dans ce qui devrait être une conversation privée entre un appareil (comme un ordinateur) et un centre de stockage de données (comme un serveur).

Une fois que le hacker pénètre dans le système, cette personne peut observer, modifier ou supprimer pratiquement n’importe quelle donnée. Et les conséquences pourraient être catastrophiques.

Qu’est-ce qu’une injection SQL ?

Tout site web repose sur du code. Les blogueurs et blogueuses nous disent que le codage deviendra tôt ou tard une compétence incontournable. Tout le monde devra le faire pour survivre dans la société moderne. Mais actuellement, les personnes qui savent coder utilisent ces compétences pour manipuler un aspect fondamental du fonctionnement d’un site web. 

La plupart des sites web modernes fonctionnent grâce à des bases de données, y compris ceux qui :

  • Vendre des produits. 
  • Autoriser les connexions. 
  • Publier des blogs.

Un site comme celui-ci repose sur le langage de requête structuré (SQL). Les programmeurs et programmeuses utilisent ce langage pour aider le site à gérer et à fournir des données. Chaque fois qu’une personne interagit avec un site comme celui-ci, ses requêtes et commandes parviennent au site via SQL. Un hacker, lors d’une attaque par injection SQL, détourne ce langage pour en faire un usage inédit. 

Quelles commandes SQL les hackers ciblent-ils ?

Un hacker pourrait manipuler pratiquement n’importe quelle commande SQL, mais les cibles les plus courantes incluent :

CommandeDescription
oùLorsque vous recherchez l’emplacement des données que vous souhaitez sélectionner
Mettre à jourLorsque vous demandez une actualisation des données
INSÉRERLà où vous autorisez de nouvelles données
SélectionnerLorsque vous identifiez un type de données par son nom ou que vous classez des données

Un hacker peut utiliser une injection SQL pour :

  • Rechercher. Un hacker qui modifie des données SQL pourrait découvrir des informations que vous préféreriez garder confidentielles. 
  • Accès. Un hacker pourrait modifier la logique de votre site ou extraire des données de votre base de données. Cela pourrait permettre à une personne de voir tous les noms d’utilisateur et mots de passe, ce qui pourrait entraîner un accès non autorisé. 
  • Planification. Un hacker pourrait examiner la façon dont votre base de données est programmée et l’endroit où elle est stockée. Ces recherches pourraient être utilisées lors de la prochaine attaque.

Quels sont les deux types d’injection SQL ?

Il existe deux principaux types d’injection SQL, à savoir :

TypeFonctionnement
Première commandeUne application offre la possibilité de transmettre des données. L’utilisateur ou l’utilisatrice saisit du code, que le système traite de manière non sécurisée.
Deuxième ordreL’application reçoit des données en entrée et les stocke pour une utilisation ultérieure (par exemple en les enregistrant dans une base de données). Lorsque l’application reçoit une requête différente, ces données inhabituelles sont extraites et intégrées de manière non sécurisée.

Comment fonctionne concrètement une attaque par injection SQL ?

Examinons un exemple d’attaque SQL afin que vous puissiez comprendre comment elle se déroule. Les développeurs peuvent partager des lignes de code, ce qui vous permet de voir comment il s’exécute en temps réel. Nous allons toutefois conserver une définition générale accessible à toutes les personnes qui nous lisent. 

Dans cet exemple, une personne connue dans votre base de données porte le nom de Johnson.

Un hacker accède à votre site web, et cette personne est invitée à se connecter. 

La personne n’indique pas le mot « Johnson » dans le champ. À la place, la personne saisit une chaîne de code, par exemple : « OR 1 equals 1. »

Votre système interprète cela comme une commande et va parcourir l’ensemble de la base de données pour la traiter. Si le hacker a rédigé un code suffisamment robuste, le serveur pourrait même être amené à divulguer le contenu de l’ensemble des données présentes dans vos tables. 

Le site web Gab a été victime d’une attaque de ce type, et des hackers ont eu accès à tous ces éléments :

  • Publications publiques 
  • Publications privées, de pair à pair 
  • Publications de groupe 
  • Informations du profil 
  • Noms d’utilisateur et d’utilisatrice 
  • Mots de passe 

Toute personne sur Gab ayant utilisé une combinaison similaire de nom d’utilisateur et de mot de passe sur un autre site s’exposait à des risques encore plus importants. Les hackers auraient pu essayer ces identifiants sur d’autres sites et accéder encore plus largement à la vie en ligne des personnes concernées. 

Pouvez-vous empêcher une attaque par injection SQL ?

Il est rapide et efficace de gérer un site web via des bases de données. Vous n’avez pas besoin d’un serveur puissant pour gérer toutes vos pages, et le contenu peut être modifié en appuyant simplement sur un bouton. Mais il est essentiel de veiller à protéger un site conçu avec cette technologie. 

Comment tester la présence de vulnérabilités d’injection SQL ?

Détectez votre vulnérabilité aux attaques par injection SQL en soumettant votre propre code SQL. Recherchez des réponses inhabituelles indiquant que votre serveur interprète ces éléments comme des commandes. 

Ensuite, envisagez de développer un ensemble de caractères et de commandes autorisés. Ne laissez pas les personnes saisir n’importe quoi dans vos champs de saisie. Limitez ce qu’ils peuvent saisir à des termes dont vous savez qu’ils ne peuvent pas être considérés comme du code.  

Foire aux questions (FAQ)

Quelle est la différence entre une injection SQL de premier ordre et une injection SQL de second ordre ?

Dans une injection SQL de premier ordre, une application offre la possibilité de saisir des données et l’utilisateur saisit du code, que le système traite de manière non sécurisée. Dans une injection SQL de second ordre, l’application reçoit une entrée et la stocke pour une utilisation ultérieure (par exemple en l’enregistrant dans une base de données) ; lorsque l’application traite une autre requête, ces données inhabituelles sont extraites et intégrées de manière non sécurisée.

Quelles commandes SQL sont le plus souvent exploitées lors d’une attaque par injection ?

Les hackers peuvent manipuler pratiquement n’importe quelle commande SQL, mais les cibles les plus courantes incluent WHERE (pour rechercher l’emplacement des données à sélectionner), UPDATE (pour demander une actualisation des données), INSERT (pour permettre l’ajout de nouvelles données) et SELECT (pour identifier des données par leur nom ou pour trier les données).

À quelles données un hacker peut-il accéder via une injection SQL ?

Comme l’a montré l’attaque contre le site Gab, un hacker peut accéder aux publications publiques, aux messages privés entre pairs, aux publications de groupe, aux informations de profil, aux noms d’utilisateur et aux mots de passe. Si les utilisateurs réutilisent leurs identifiants sur différents sites, des hackers pourraient également essayer ces identifiants sur d’autres sites et accéder encore plus largement à leur vie en ligne.

Comment tester si mon site web présente une vulnérabilité à l’injection SQL ?

Détectez votre vulnérabilité aux attaques par injection SQL en soumettant votre propre code SQL. Recherchez des réponses inhabituelles indiquant que votre serveur interprète ces éléments comme des commandes.

Qu’est-ce que la validation des saisies et comment contribue-t-elle à prévenir les injections SQL ?

La validation des saisies consiste à définir un ensemble de caractères et de commandes autorisés pour les champs de votre formulaire. En empêchant les personnes de saisir n’importe quel texte dans vos champs et en limitant les entrées aux termes dont vous savez qu’ils ne peuvent pas être interprétés comme du code, vous réduisez le risque que du SQL malveillant soit envoyé à votre serveur.

Pourquoi les sites web reposant sur des bases de données sont-ils particulièrement exposés aux attaques par injection SQL ?

La plupart des sites web modernes fonctionnent avec des bases de données, et un site qui utilise SQL traite les requêtes et commandes des utilisateurs via ce langage. Un hacker, lors d’une attaque par injection SQL, détourne ce langage de son usage initial, ce qui signifie que tout champ de saisie utilisateur est un point d’entrée potentiel pour du code malveillant.

Références

Coder en 2016, c’est comme lire en 1816. (octobre 2016). Prenda. 

5 points essentiels sur les sites web pilotés par une base de données. (juin 2016). Business 2 Community. 

Sites web pilotés par une base de données. (octobre 2003). Journal of the Medical Library Association. 

La plateforme d’extrême droite Gab confirme avoir été piratée. (Mars 2021). Sécurité.

Guide de prévention des injections SQL. OWASP.

Continuez votre parcours dans l‘univers de l’identité