Qu'est-ce que l'injection SQL ?

Vidéo sur Youtube Le play Youtube

L'injection SQL est une technique d'attaque contre des bases de données. Elle consiste à injecter du code SQL malveillant dans des requêtes prévues pour être exécutées par le système de gestion de base de données d'un site internet 🏴‍☠️.

Si elle est exploitée avec succès, cette vulnérabilité peut permettre à un attaquant d'accéder à des données sensibles, de les modifier ou de les détruire 🥺.

Ce type d'attaque affecte les applications qui utilisent par exemple MySQL, SQL Server, ou Oracle, et qui ne filtrent pas correctement les entrées fournies par les utilisateurs 😾.

Comment fonctionne une injection SQL ?

L'injection SQL arrive quand des données d'entrées, comme le texte dans des formulaires, ne sont pas correctement vérifiées avant d'être utilisées dans des commandes SQL.

Dans ces cas-là, les hackers peuvent utiliser ces failles pour insérer du code SQL malveillant.

Illustration d'une injection SQL !

Nous allons découvrir un exemple concret.

Imaginer un site internet. Celui-ci possède une page qui permet aux utilisateurs de récupérer tous les utilisateurs dans une base de données. Pour ce faire, ils doivent indiquer leur e-mail et un mot de passe.

Un site internet de connexion

Après cela une requête SQL va vérifier si cet utilisateur existe et si le mot de passe est correct.

SQL vérifie les informations de l'utilisateur

Si les informations sont correctes, les données sont transmises et l'autorisation est donnée.

SQL autorise l'accès et envoie les données

Si les informations sont incorrectes, les données ne sont pas transmises et l'autorisation n'est pas accordée.

SQL n'autorise pas l'accès

C'est le fonctionnement normal 😌 !

Attaquer !

Mais imaginons qu'au lieu de mettre l'e-mail, un individu décide d'insérer une chaîne de caractère qui sera interprétée.

bob@lmail.com ' -- 

Et bien, cette chaîne va être insérée dans une requête SQL et donnera l'autorisation systématiquement même si le mot de passe est incorrect. Par conséquent, n'importe qui peut avoir accès à la liste de tous les utilisateurs 😨.

SQL autorise tout le temps

Je vous mets le code SQL injecté à travers le champ en rouge.

Le code SQL malveillant en rouge

Avec ce code, systématiquement, la récupération de tous les utilisateurs fonctionnera.

Ça fonctionne ! Ça fonctionne encore !

C'est un vrai problème et nous allons voir ensemble comment le corriger 😮‍💨.

Dans un premier temps, nous allons préparer le terrain dans la leçon suivante.