Le principe de l'injection SQL : ajoutez un morceau de code SQL à l'instruction SQL d'origine, construisez une instruction SQL spéciale et utilisez les propres autorisations du programme pour implémenter les opérations requises.
Supposons qu'il existe maintenant une table utilisateur :
uidusernamepwd
1adminadmin222
2custome123456
Effectuez maintenant une opération de connexion :
"; print_r($row); ?>
Le code ci-dessus effectue une simple opération de connexion. Exécutez ce programme dans le navigateur : localhost/test/login.php?user=admin&pwd=admin222, L'exécuté. L'instruction SQL est équivalente à : select * from user which username= 'admin' et pwd = 'admin222', et le résultat de l'exécution sera obtenu.
Si vous demandez : localhost/test/login.php?user=admin&pwd=admin, il n'y aura aucun résultat de requête car le mot de passe et le nom d'utilisateur ne correspondent pas. C'est-à-dire l'instruction SQL : select * from user où username= 'admin' et pwd = 'admin' ne peuvent pas trouver le résultat. Ensuite, s'il s'agit d'une instruction SQL : sélectionnez * de l'utilisateur où username= 'admin' et pwd = 'admin' ou 1 = 1 ;? Vous pouvez l'essayer vous-même, vous pouvez obtenir ceci comme suit :
uidusernamepwd
1adminadmin222
2custome123456
Si vous y accédez sur le client : localhost/test/ connexion Qu'en est-il de .php?user=admin&pwd=admin%20or%201=1 ?
Il a directement contourné la vérification et obtenu les informations de l'utilisateur administrateur dans la base de données. Il s'agit d'une simple injection SQL.
Prévention de l'injection SQL :
(1) S'il s'agit d'une variable entière, utilisez la fonction intval() ou (int) pour convertir tous les paramètres entrants en une valeur numérique.
(2) Pour les variables de caractères, utilisez addlashes() pour convertir tous les ' (guillemets simples), " (guillemets doubles), (antislashes) et (espaces) en caractères contenant des antislashs.
(3) Échappez ou filtrez certains caractères spéciaux, tels que %, etc.
(4) Faites une sauvegarde des données >
php sur la vulnérabilité d'injection d'objet de désérialisationLe partage de cinq célèbres outils d'analyse des vulnérabilités d'injection SQL
php empêche le code de vulnérabilité SQL Inject
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!