J'ai une tâche pour empêcher l'injection SQL dans une application Web ASP.Net. Il y a une zone de texte de commentaires que les testeurs ont signalée comme emplacement possible pour l'injection SQL. L'événement de bouton Soumettre qui insère le texte dans la base de données utilise déjà une SQLCommand paramétrée par Oracle. Mais lors des tests, j'ai pu insérer "select 'duff' à partir du dual;" comme un commentaire. Donc, je suis curieux de savoir comment éviter une injection sql quand tout ce que je peux trouver, c'est que les gens disent des paramètres d'utilisation. Tous les conseils sont appréciés. Je vous remercie. Voici les lignes qui appellent le proc stocké.Stérilisation de la zone de texte Asp.Net avant la soumission pour empêcher l'injection SQL
dbCommand = db.GetStoredProcCommand("ABC.Insert_My_Comment");
db.AddInParameter(dbCommand, "in_comments", DbType.String, obj.Comments);
db.ExecuteNonQuery(dbCommand);
Votre code semble correct. Est-ce que les utilisateurs étiquettent cela pour une injection potentielle de sql sur le seul raisonnement d'une boîte de texte? –
Je suppose que c'est le raisonnement derrière cela. Mais je suis en quelque sorte supposé empêcher tout type de SQL d'être inséré. J'ai pensé à une validation regex, mais connaissez-vous d'autres méthodes? Et merci pour les commentaires. – jhorton
Vous êtes censé empêcher l'insertion du texte d'une requête sql dans un champ de commentaire? Cela ne semble pas être un bon usage de votre temps pour être honnête. Les commentaires sont-ils exécutés en tant que requêtes sur la base de données? Ce n'est pas la même chose que d'empêcher une injection SQL. L'injection serait si quelqu'un mettait ""); DROP TABLE COMMENTAIRES; 'dans la boîte de commentaires et il a effectivement laissé tomber la table. Ce qui ne va pas, puisque votre code mettra simplement ce texte dans le champ de commentaire. Cela a-t-il du sens? –