ADO.NET在没有参数化的情况下转义SQL

时间:2018-01-23 22:00:22

标签: ado.net

我正在尝试向我的一个朋友证明一些事情:逃避SQL字符串。当无法使用参数化时(例如,有人在数据库中保存了一大块SQL文本并且稍后将用作where子句的一部分),有什么建议可以转义SQL Server查询的用户输入部分?基本上,它是一种在单个文本列中保存预先查询的方法。即使他参数化了where子句,它也可能具有任意数量的参数(仍然必须作为文本存储在数据库中)。有没有办法做到这一点,不会打开SQL注入风险?

在这种情况下,您无法真正预先参数化,因为您没有一种干净的方法来确保参数名称不会发生冲突等。 System.Data.SqlClient中是否有一些库只是转义字符串以使SQL安全而不需要参数化?我的好友似乎认为这是一件事,我不这样做,我试图阻止他踩到自己身上。哦,为了让事情变得更有趣,SQL被.NET嵌入到数据库中,但是由SQL Server动态执行,因此没有好的方法来使用EF或类似的东西来安装它。对于他的工作方式,他必须以某种方式消毒SQL。

0 个答案:

没有答案