Je veux vérifier que l'instruction select (string) est valide ou non dans C# .net, si select statement est correct puis récupère les données et remplit la liste déroulante sinon la liste déroulante devrait être videcheck L'instruction select est valide ou non dans C# .net
Répondre
À quelle fréquence l'instruction select serait-elle invalide? On dirait qu'un simple bloc try/catch autour de l'exécution du SQL peut suffire.
En aparté, j'espère que vous ne faites pas une application qui permettrait à quelqu'un de taper dans SQL arbitraire dans une boîte qui vous puis exécutez ...
Il peut y avoir une situation où il suffit d'exécuter le SQL et de gérer les erreurs n'est pas sûr - supposons que vous ne maîtrisez pas complètement le SQL qui est en cours d'exécution. Dans ce scénario, si le SQL est quelque chose de très mauvais (par exemple une instruction TRUNCATE TABLE), alors une erreur peut ne pas être levée mais elle aurait exécuté l'instruction malveillante. Par conséquent, je pense qu'il est plus sûr dans ce scénario de suivre les étapes décrites dans ma réponse. – AdaTheDev
@AdaTheDev - Exactement, ce qui explique pourquoi j'ai eu mon commentaire sur le fait de permettre à quelqu'un de taper SQL arbitraire.Très dangereux. –
Une approche qui couvre la plupart des scénarios est d'exécuter le SQL avec SET FMTONLY ON
par exemple
SET FMTONLY ON;
SELECT SomeField FROM ExampleQuery
De BOL, SET FMTONLY:
Les retours ne métadonnées au client. Peut être utilisé pour tester le format de la réponse sans réellement exécuter la requête query .
Cela provoquera une erreur si la requête n'est pas valide. Vous pouvez également vérifier le résultat pour déterminer le schéma du jeu de résultats renvoyé (c'est-à-dire aucun schéma = pas une instruction SELECT).
Mise à jour: En termes généraux lorsqu'ils traitent avec SQL que vous voulez protéger contre l'injection SQL il y a d'autres choses que vous devriez penser à:
- Évitez sql dynamique (concaténer valeurs entrées par l'utilisateur dans une chaîne SQL à exécuter). Utilisez le SQL paramétré à la place.
Encapsule la requête en tant que requête imbriquée. par exemple.
SELECT * FROM (SELECT quelque chose ADynamicQueryThatsBeenGenerated) x
Donc, si la requête contient plusieurs commandes, cela se traduirait par une erreur. c'est-à-dire que cela aboutirait à une requête invalide lorsqu'elle est encapsulée comme une requête imbriquée:
SELECT SomethingFrom FROM MyTable;TRUNCATE TABLE MyTable
'SELECT SomethingFrom FROM MyTable); TABLE TRUNCATE MyTable; -' – SLaks
- 1. python check html valide
- 2. chaîne est valide double ou non
- 3. Check in Javascript si un certificat SSL est valide
- 4. Check Listener en cours d'exécution ou non
- 5. Jarfile non valide ou corrigé
- 6. Comment vérifier la MSMQ messageBody est valide ou non
- 7. Chemin d'accès ASP .NET non valide
- 8. comment un site Web Certificat SSL est valide ou non?
- 9. C# Assembly Injection Check
- 10. comment le service Web valide l'URL demandée est valide ou non?
- 11. Est-ce C++ valide?
- 12. Est-ce une macro valide dans C?
- 13. Appel ou argument de procédure non valide dans vbscript
- 14. Oracle SQL Identifiant non valide
- 15. Exception d'exception non valide
- 16. Conversion non valide d'int en int ** C++
- 17. Est-ce un code C++ valide?
- 18. hexadécimale 0x19 est un caractère non valide
- 19. VBS Caractère non valide
- 20. ressources non valide Fichier
- 21. FxCop (ou équivalent) pour le code C++ non-Net
- 22. Check est prise bloque (Winsock spécifique)
- 23. Comment détecter si l'emplacement est valide ou non dans l'application Android?
- 24. Check Vu utilisateur privilège admin dans la machine connecté .net
- 25. Crash de variante non valide
- 26. ACL Check/Management en C#
- 27. CAST non valide (date OLEDB)
- 28. java.io.IOException: argument non valide
- 29. Comment ignorer XML non valide dans JSF?
- 30. Projet converti VS2010 référence non valide
Cette question n'a aucune signification. – SLaks
Plus vous posez d'efforts sur votre question, plus la qualité et la quantité de réponses que vous obtiendrez seront grandes. Ce n'est pas clair pour le moins. –
J'ai supprimé la plupart des tags car ils étaient incorrects ou dénués de sens. S'il vous plait, expliquez-vous plus et quelqu'un peut repasser la question comme il se doit. – slugster