Injection SQL
Une injection SQL est une forme de cyberattaque qui cible les sites web et les applications web liés à une base de données. Ces attaques exploitent des logiciels de serveur de site web et de base de données mal configurés afin de tromper un serveur et de l’amener à analyser des instructions SQL qu’il n’exécuterait pas autrement. Ces attaques peuvent révéler des informations personnelles et financières sensibles, permettre à un attaquant de modifier ou de supprimer des informations stockées dans une base de données, ou fournir d’autres accès non autorisés.
Un site web est vulnérable à une injection SQL lorsqu’il accepte des données saisies par l’utilisateur dans un formulaire texte et les inclut dans une requête SQL. Au lieu de remplir le champ du formulaire avec les informations attendues, comme un nom d’utilisateur, l’attaquant saisit une chaîne de caractères qui modifie la requête SQL. Par exemple, une requête hypothétique pourrait commencer par SELECT UserID, Name, Password FROM Users WHERE UserID = , suivie de la saisie du champ de formulaire User ID. Si l’utilisateur saisit son User ID, la requête fonctionne comme prévu et affiche ses informations.
Cependant, si le serveur insère sans restriction le texte saisi dans la requête, un attaquant peut l’utiliser pour modifier l’instruction SQL elle-même. Si, au lieu d’un User ID, quelqu’un saisit le texte 317 OR 1=1, la requête devient SELECT UserID, Name, Password FROM Users WHERE UserID = 317 OR 1=1;. Comme OR 1=1 est toujours évalué comme vrai, cette condition remplace le User ID ; la requête renvoie à la place les User ID, les noms et les mots de passe de toutes les entrées de la table Users. D’autres types d’injection de code peuvent permettre à un attaquant de se connecter en tant qu’administrateur du site, de supprimer des enregistrements ou des tables d’une base de données, ou, dans certains cas extrêmes, d’injecter et d’exécuter des scripts shell et d’autres codes.
Un administrateur de site web peut empêcher les attaques par injection SQL en maintenant les logiciels du serveur à jour. Il est également important de « nettoyer » les données saisies dans la base de données en limitant le texte saisi ou en filtrant certains caractères. Les administrateurs de sites web peuvent aussi paramétrer leurs requêtes SQL, en utilisant dans la requête des espaces réservés qui font référence aux données saisies par l’utilisateur au lieu de les y insérer directement.
Testez vos connaissances