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.

Qu’est-ce que le SQL ?

        Le SQL (Structured Query Language ou en français langage de requête structurée) est un langage de programmation standard utilisé dans la gestion des bases de données. Pour la communication avec les bases de données ou l’interrogation de données, le SQL est le langage le plus couramment utilisé pour accéder à vos données.

La base de données est un peu l’entrepôt de l’application web. Les bases de données contiennent des tables, qui sont un peu comme des boîtes contenant les données, par exemple des informations sur les clients, les articles à vendre ou encore des informations d’identification. Lorsque vous entrez des informations dans une application web, le SQL permet à la base de données de traiter votre requête et de vous retourner les informations demandées.

La syntaxe intuitive du SQL, basée sur l’anglais, en a fait le langage de choix de nombreux programmeurs d’API pour la gestion des bases de données. Si la base de données est l’entrepôt de l’application web, l’API en est sa vitrine. C’est avec elle que vous êtes en contact lorsque vous consultez un site web et que vous envoyez des demandes via des champs (par exemple pour rechercher un élément).

Le langage SQL se trouve juste derrière cette vitrine, et il prend note de vos demandes et les traduit en un code compréhensible pour la base de données. Malheureusement, la capacité du SQL à interpréter les demandes des utilisateurs en fait aussi une proie facile pour le piratage.

Au cas où vous vous seriez posé la question, on peut prononcer en anglais « sequel » ou bien simplement « S-Q-L ». Consultez notre cours accéléré sur les autres termes de cybersecurite si vous n’êtes pas certain de bien les connaître.

Comment se déroulent les attaques par injection SQL ?

    Les pirates lancent les attaques par injection SQL via un champ de saisie de l’API web, par exemple le portail de connexion, un formulaire ou une barre de recherche. En modifiant les données saisies à l’aide d’un petit fragment de code appel exploit, le cybercriminel peut faire croire à une base de données non sécurisée que ces données représentent une commande. 

      Les sites web dont les champs de saisie ne sont pas sécurisés sont vulnérables face aux attaques SQLi.

Le fait de répéter les injections SQL donne une bonne idée au pirate du niveau de vulnérabilité du logiciel. Voici un exemple d’attaque par injection SQL :

  1. Vous essayez d’accéder à vos données utilisateur sur un site web, donc vous entrez votre nom d’utilisateur : roboto23.
  2. SQL transforme ce que vous tapez en une chaîne intelligible pour la base de données. SQL transforme par exemple ce que vous avez saisi en : « Trouve l’utilisateur roboto23 et donne-moi ses données. » Vous avez simplement tapé « roboto23 », mais SQL traduit cette demande en code qui indique à la base de données ce qu’elle doit faire. Voici à quoi pourrait ressembler ce code :

SELECT * FROM users WHERE userID = AVGRocks17;

L’astérisque indique « toutes les données », ce qui peut par exemple inclure votre vrai nom et votre mot de passe.

Au lieu de filtrer sur un utilisateur donné, l’injection SQL de la commande OR 1=1 dans la barre de recherche, le portail de connexion ou tout autre champ de saisie force le SQL à demander à la base de données toutes les informations sur TOUS les utilisateurs. Comment ? Voici ce que reçoit la base de données :

SELECT * FROM users WHERE userID = roboto23 OR 1=1;

La base de données interprète ceci comme une commande qui doit rechercher les données de tous les utilisateurs et les transmettre si l’identifiant correspond à AVGRocks17 ou si 1 est égal à 1, ce qui est bien entendu toujours le cas.

Les injections SQL sont capables de modifier, d’insérer et de supprimer des éléments dans une base de données ou bien de poser les bases d’une attaque par deni de service. Les pirates peuvent aussi installer des portes dérobées qui leur donnent un accès permanent au serveur.

Les commandes d’injection SQL les plus courantes permettent aux pirates d’altérer, de voler ou de détruire des données, d’usurper ou de voler des identite ou encore de modifier les autorisations de la base de données. Dans certains cas extrêmes, l’injection SQL peut donner au pirate le contrôle total sur la base de données.

Comment se fait-il que les attaques par injection SQL fonctionnent si facilement ? En fait, cela ne devrait pas être le cas. Les vulnérabilités d’injection SQL résultent souvent d’erreurs de programmation commises par le développeur web. Les entreprises font souvent appel à des développeurs n’ayant que peu d’expérience ou de savoir-faire, et la sécurité prend aussi plus de temps à programmer. Les délais souvent serrés font que de nombreuses entreprises négligent la sécurité.

Il ne s’agit cependant pas seulement d’erreurs humaines. Comme la logique est assez simple, il est facile d’automatiser les attaques SQLi. Et même le meilleur des programmeurs ne fait pas le poids face à une armée de robots.

Comment eviter les attacques par injection spl?

Les développeurs web peuvent éviter les attaques par injection SQL en adoptant de bonnes pratiques de programmation. Mais vous pouvez aussi agir pour protéger vos données sensibles des attaques SQLi.

  • Verifier si un site sur avant d’entrer des informations et suivez les actualités sur la sécurité pour pouvoir changer de mot de passe si l’un des sites que vous utilisez a été victime d’une fuite de données.
  • Utilisez des mots de passe forts et uniques, avec au moins 12 caractères et stockez-les de manière sécurisée par le biais d’un gestoinnaire de mot de passe de qualite.Vérifiez si vos comptes ont fait l’objet d’une fuite suite à une attaque SQLi ou un autre type d’attaque avec Avast Hash Check. Si c’est le cas, changez votre mot de passe immédiatement.
  • Les développeurs web et les entrepreneurs peuvent recourir aux conseils qui suivent pour assurer la sécurité de leurs bases de données face aux attaques SQLi.

     

Publications similaires