Qu’est-ce qu’une injection SQL ?

L’injection SQL est une cyberattaque qui consiste à injecter dans une requête SQL des morceaux de codes non filtrés. Le hacker peut modifier la requête afin d’accéder à la base de données.

Télécharger l’ebook : La Sécurité du Cloud
pour les nuls

Webinar Oracle Security Week

Qu’est-ce qu’une injection SQL et comment se protéger de cette attaque ?

Temps de lecture : 3 mn

L'injection SQL, ou faille SQLi, est une cyberattaque réputée. Sa capacité à exploiter des failles de sécurité peut être très puissante si elle est bien exploitée.

Injection SQL : définition

Les attaques par injection de commandes SQL exploitent les failles de sécurité d’une application qui interagit avec des bases de données. L’attaque SQL consiste à modifier une requête SQL en cours par l’injection d’un morceau de requête non prévu, souvent par le biais d’un formulaire. Le hacker peut ainsi accéder à la base de données, mais aussi modifier le contenu et donc compromettre la sécurité du système.

Différents types d’injection SQL

  • Le type d’injection blind based injecte des morceaux qui vont retourner caractère par caractère ce que l'attaquant cherche à extraire de la base de données. Ce type d’injection dépend de la réponse du serveur : soit la requête d’origine revoie le même résultat et indique que le caractère est valide, soit elle ne renvoie pas le même résultat et signifie que le caractère testé n'est pas le bon.
  • La méthode error based injecte des morceaux qui retournent champ par champ ce que le hacker cherche à extraire de la base de données. Ce type d’injection profite utilise une faiblesse de la base de données et ainsi détourne le message d'erreur qu’elle génère.
  • L’injection SQL union based injecte des morceaux qui vont retourner un ensemble de données directement extraites de la base de données. Ce type d’injection peut dans les cas les plus extrêmes récupérer des tables entières de base de données en une ou deux requêtes ! Mais, en général, cette méthode retourne entre 10 et 100 lignes de la base de données par requête SQL détournée.
  • la méthode Stacked queries est l’attaque la plus dangereuse. En raison d’une erreur de configuration du serveur de base de données, ce type d’injection peut exécuter n'importe quelle requête SQL sur le système ciblé. Non seulement elle récupère des données, mais elle peut aussi des données directement dans la base de données, par injection d’une autre requête SQL.

Exemples d’injection SQL

  • Le site de Guess.com subit en 2002 une attaque d’injection SQL lors de laquelle 200 000 de coordonnées de clients, y compris les numéros de carte de crédit, ont été hackées.
  • 10 597 numéros de sécurité social américains ont été volés en 2008.
  • Le site de la Royal Navy en Angleterre est paralysé en raison d’une attaque par injection SQL en 2010
  • En 2013, Yahoo rapporte le vol de données de plus de 1 milliard de comptes

Comment contrer les attaques par injection SQL ?

Suivre certaines règles permet de se prémunir des attaques par injection de commandes SQL :

  • Utiliser des procédures stockées à la place du SQL dynamique afin d’éviter l’injection SQL
  • Utiliser des comptes utilisateurs SQL à accès limité autant que possible
  • Utiliser des requêtes SQL paramétrées : des requêtes à trous sont envoyées au serveur SQL qui les complétera à l’aide des paramètres qui lui sont envoyés.

Découvrir plus de contenu autour de la Sécurité

  • Replay Webinar Sécurité

    Oracle Data Safe : Protéger vos bases de données Oracle

  • Article Blog

    Observatoire de la Tech: Cybersécurité, où en sont les français ?

  • Infographie Sécurité

    Adopter Oracle Cloud Infrastructure, conçu selon une architecture “security first”

  • Article Blog

    Cloud de confiance : Sur quels critères objectifs se reposer ?