L'injection SQL est une cyberattaque qui tire parti d'une mauvaise validation des entrées dans les requêtes SQL. Si une application utilise une entrée utilisateur non fiable dans une requête SQL vers une base de données, une entrée utilisateur délibérément mal formée peut être en mesure de modifier la requête. Les attaques par injection SQL peuvent être utilisées pour accéder, modifier ou supprimer des données de la base de données.
qui effectuent des requêtes SQL à partir d'entrées utilisateur sont potentiellement vulnérables aux attaques par injection SQL. Par exemple, une application Web peut utiliser des requêtes SQL pour mettre en œuvre un processus d'authentification. L'utilisateur fournit son nom d'utilisateur, que l'application utilise pour rechercher le hachage du mot de passe du compte de cet utilisateur. Si le hachage du mot de passe fourni par l'utilisateur correspond à ce hachage, l'utilisateur s'authentifie avec succès et accède à son compte.
Si l'application Web n'effectue pas de validation sur le nom d'utilisateur avant de l'inclure dans une requête SQL, un nom d'utilisateur délibérément mal formé pourrait être mal interprété par le programme. Par exemple, les requêtes SQL utilisent généralement des guillemets simples (') ou doubles (") pour désigner les données d'une commande. Par exemple, une commande permettant de rechercher l'enregistrement d'un client dans une base de données sur la base du nom d'utilisateur user pourrait être la suivante SELECT * FROM customers WHERE username="user" (nom d'utilisateur = "utilisateur").
Un attaquant effectuant une attaque par injection SQL contre sa commande pourrait inclure un caractère de guillemet double dans son entrée pour que certaines de ses données soient interprétées comme du code. Prenons l'exemple du nom d'utilisateur utilisateur" OU "1"="1.
Lorsqu'elle est insérée dans la requête SQL, la requête devient SELECT * FROM customers WHERE username="user" OR "1"="1". Au lieu de rechercher les enregistrements dont le nom d'utilisateur correspond à la valeur fournie par l'utilisateur, cette requête renvoie les enregistrements qui répondent à l'une des deux conditions suivantes. Le premier est le test prévu username="utilisateur"qui renverra le dossier de l'utilisateur.
La deuxième condition est le test "1"="1". Comme cela est toujours vrai, tous les enregistrements de la base de données seront renvoyés. Cela pourrait permettre à l'attaquant d'extraire des informations sensibles sur d'autres utilisateurs ou de contourner l'authentification ou de s'authentifier en tant qu'autre utilisateur.
Les attaques SQLi peuvent être utilisées à différentes fins et de différentes manières. Les trois principaux types de SQLi sont les suivants :
Les attaques SQLi tirent parti d'une mauvaise validation des entrées lors de l'utilisation de données non fiables pour les commandes SQL. De nombreuses attaques SQLi impliquent l'utilisation d'un caractère inattendu, tel qu'un guillemet simple ou double, dans la saisie de l'utilisateur.
La validation des entrées avant d'inclure des données fournies par l'utilisateur dans des requêtes SQL peut contribuer à réduire la menace des attaques SQLi. Par exemple, une application peut limiter la saisie de l'utilisateur à un ensemble particulier de caractères, en n'autorisant par exemple que les noms d'utilisateur alphanumériques, ou empêcher certains caractères d'être inclus dans la saisie de l'utilisateur. Cependant, la validation des entrées, bien qu'importante, n'est pas suffisante pour se protéger contre les attaques par injection de code SQL. Les attaquants peuvent être en mesure de contourner les listes d'autorisation ou les listes de blocage en utilisant des combinaisons inattendues de caractères pour éviter les blocages.
C'est pourquoi les entreprises devraient également déployer un Pare-feu pour applications Web (WAF) ou, idéalement, Protection des applications Web et des API (WAAP) devant l'application Web et les API qui effectuent des requêtes SQL. Ces solutions peuvent aider à identifier et à bloquer les requêtes malveillantes qui tentent d'exploiter SQLi et d'autres attaques contre les applications Web et les API.
Les attaques SQLi sont l'une des nombreuses attaques qui menacent les systèmes d'information d'une organisation. application sécurité (AppSec). Les entreprises ont besoin de solutions de sécurité capables de protéger leurs applications et bases de données orientées vers l'Internet, à la fois sur site et sur le site cloud.
Check Point CloudGuard AppSec fournit des capacités WAAP automatisées qui apprennent comment fonctionne un site application et empêchent les demandes illégitimes et malveillantes d'atteindre les applications vulnérables. Pour en savoir plus sur CloudGuard AppSec et sa capacité à protéger contre SQLi et d'autres attaques, consultez ce document eBook. Vous êtes également invités à inscrivez-vous pour un démo gratuit pour découvrir par vous-même les capacités de CloudGuard AppSec.