Existe-t-il un projet/dll .Net qui prend en charge l'échappement de l'entrée fournie par l'utilisateur aux requêtes de base de données pour divers systèmes de base de données?Echappement des requêtes SQL - prise en charge de différentes plates-formes de base de données dans .Net
Je voudrais que toute notre équipe standardise et utilise un module pour effectuer l'échappement de l'entrée fournie par l'utilisateur qui sera ensuite utilisée dans les requêtes SQL paramétrées. Idéalement, je voudrais spécifier le système de base de données (Oracle, SqlServer, mySql, etc.) dans le fichier de configuration et être capable d'appeler Escape (variableName) et il échapperait le contenu de la chaîne en fonction du paramètre de base de données en cours dans le fichier web.config.
Sinon, la meilleure chose serait quelque chose comme EscapeForOracle, EscapeForSqlServer, etc.
Au minimum, le projet devrait soutenir Oracle, SqlServer et Mysql.
Je me demande si je dois le créer en interne ou s'il existe un produit commercial/open source existant pour ce faire.
Vous dites "requêtes SQL paramétrées", et vous parlez d'échappement. Pas sûr de ce que tu veux dire par là. Pourriez-vous donner des exemples précis de ce que vous voulez accomplir? Je pourrais avoir le code de départ que vous pourriez utiliser si vous voulez suivre la voie du développement interne. –
Lasse a raison: si vous utilisez des paramètres pour toutes vos données fournies par l'utilisateur (et que vous ne construisez pas de SQL dynamique dans un SP), vous n'avez pas besoin d'y échapper - c'est tout. –
On dirait que j'ai trouvé un projet qui fait quelque chose de similaire: ESAPI (http://code.google.com/p/owasp-esapi-dotnet/). Malheureusement, à ce stade, il ne prend en charge que Oracle et MySql et pas SqlServer. Plus d'informations sont disponibles à: http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet#Defense_Option_3:_Escaping_all_User_Supplied_Input Mais je suis d'accord - si vous utilisez des requêtes paramétrées - il semble que quelque chose comme ça ne devrait pas être nécessaire . Plus d'infos: http://www.owasp.org/index.php/ESAPI –