【发布时间】:2009-06-01 22:47:59
【问题描述】:
是否有支持将用户提供的输入转义到各种数据库系统的数据库查询的 .Net 项目/dll?
我希望我们的整个团队标准化并使用一个模块来执行用户提供的输入的转义,然后将其用于参数化 SQL 查询。
理想情况下,我想在配置文件中指定数据库系统(oracle、SqlServer、mySql 等)并能够调用 Escape(variableName),它会根据当前数据库设置转义字符串内容web.config 文件。
如果不是,那么下一个最好的东西就是 EscapeForOracle、EscapeForSqlServer 等。
项目至少应支持 Oracle、SqlServer 和 MySql。
我想知道我是否需要在内部创建此功能,或者是否存在现有的商业/开源产品来执行此操作。
【问题讨论】:
-
你说“参数化 SQL 查询”,然后你提到转义。不知道你的意思是什么。你能举一些你想要完成的具体例子吗?如果你想走内部开发的道路,我可能有你可以使用的起始代码。
-
Lasse 是对的——如果你对所有用户提供的数据使用参数(并且不要在 SP 内构造动态 sql),你不必逃避它——这就是全部点。
-
看起来我找到了一个做类似事情的项目:ESAPI (code.google.com/p/owasp-esapi-dotnet)。不幸的是,此时它只支持 Oracle 和 MySql,不支持 SqlServer。更多信息请访问:owasp.org/index.php/… 但我同意 - 如果您使用参数化查询 - 看起来不需要这样的东西。更多信息:owasp.org/index.php/ESAPI
-
另外,如果我错了,请纠正我,我不能将 SqlParameters 与 DDL 语句一起使用。在这种情况下,我需要一种可以转义输入的方法。 (例如创建表或创建用户)
例如:string qryString = "CREATE TABLE " + userSuppliedName;
SqlConnection 连接 = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString);
SqlCommand command = new SqlCommand(qryString, connection);连接.打开();
我将如何逃脱 qryString?
标签: .net sql database projects