Maison > base de données > tutoriel mysql > le corps du texte

quelle est la vulnérabilité d'injection SQL

清浅
Libérer: 2020-09-15 10:35:27
original
9451 Les gens l'ont consulté

La vulnérabilité d'injection SQL fait référence à l'insertion de commandes SQL saisies de manière malveillante dans les soumissions de formulaires Web ou à la saisie de chaînes de requête pour des noms de domaine ou des demandes de page, incitant finalement le serveur à exécuter des commandes SQL malveillantes

Vulnérabilité d'injection SQL

Comme son nom l'indique, la vulnérabilité d'injection SQL permet aux attaquants d'injecter des entrées malveillantes dans des instructions SQL. Pour bien comprendre ce problème, nous devons d'abord comprendre comment les langages de script côté serveur gèrent les requêtes SQL.

Par exemple, supposons qu'une fonction dans une application Web génère une chaîne à l'aide de l'instruction SQL suivante :

$statement = "SELECT * FROM users WHERE username = 'bob' AND password = 'mysecretpw'";
Copier après la connexion

Cette instruction SQL sera transmise à une fonction qui envoie la chaîne à la base de données A connectée. où il est analysé, exécuté et les résultats renvoyés.

Vous avez peut-être remarqué que cette instruction contient de nouveaux caractères spéciaux :

  • * : est l'instruction de la base de données SQL pour renvoyer toutes les colonnes de la ligne de base de données sélectionnée

  • = : est une instruction permettant à la base de données SQL de renvoyer uniquement les valeurs qui correspondent à la chaîne recherchée.

  • ' : est utilisé pour indiquer à la base de données SQL pour rechercher une chaîne Position de début ou de fin

Considérons maintenant l'exemple suivant où un utilisateur d'un site Web peut modifier la valeur de "$user" et "$password", par exemple dans une connexion form :

$statement = "SELECT * FROM users WHERE username = '$user' AND password= '$password'";
Copier après la connexion

Si l'application ne nettoie pas l'entrée, l'attaquant peut facilement insérer n'importe quelle syntaxe SQL spéciale dans l'instruction :

$statement = "SELECT * FROM users WHERE username = 'admin'; -- ' AND password= 'anything'";= 'anything'";
Copier après la connexion
  • admin'; l'entrée de l'attaquant, qui contient deux nouveaux caractères spéciaux :

  •  : Utilisé pour indiquer à l'analyseur SQL que l'instruction en cours est terminée (pas nécessaire dans la plupart des cas)

  • - : indique à l'analyseur SQL le reste de la ligne

Cette injection SQL supprime efficacement la validation du mot de passe et renvoie l'ensemble de données de l'utilisateur existant, dans ce cas " admin " l'attaquant peut désormais se connecter en utilisant un compte administrateur sans spécifier de mot de passe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!