J'essayais de tester l'unité de connexion de mon système. Mon système est conçu comme celui-ci -SQL, Microsoft SQl
si l'utilisateur entre userid - ABCD et mot de passe passe le serveur prend ces paramètres et prépare une commande SQL et il tire à Microsoft database-
select password from UserInformationTable where userid = 'abcd';
La valeur retournée est comparé avec le mot de passe donné et le résultat est ensuite envoyé au client.
I cassé avec succès dans le système en utilisant la méthode suivante -
utilisateur entre userid - <abcd1 or drop table UserInformationTable
>. Cela a fonctionné et mon UserInformationTable complet a été abandonné.
Y a-t-il une façon élégante de gérer un tel problème de piratage? Une façon est de détecter 'ou' la sous-chaîne dans l'ID utilisateur, mais je n'ai pas trouvé cela très gracieux. Est-il possible que je puisse restreindre le non. des requêtes dans une déclaration dans Microsoft SQL?
Merci et salutations, Radz
Aussi, est-ce MySQL ou SQL Server et quelle langue utilisez-vous? –
Lire sur l'injection SQL. Alors lisez pourquoi stocker n'importe quel type de mots de passe en clair est mauvais. Ensuite, lisez CodingHorror.com d'aujourd'hui sur la façon dont l'utilisation d'un tiers pour l'authentification est une bonne voie à suivre. – Joe
vous devez utiliser SqlParameters [helplink] (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.aspx) – Raghuveer