当你真的不能使用参数时,如何转义SQL查询的字符串

S'p*_*'Kr 6 .net c# asp.net cisco-axl

我已经看过这个问题了很多次,但是没有看到一个很好的例子,当参数化查询真的不是一个选项时...但我认为我有一个.

我正在使用Cisco Call Manager AXL API.它的后端是一个Informix DB.通常,只要有可能,我使用提供的SOAP方法来获取结果,因为我使用WSDL创建的接口类并在实际对象属性中传递参数,因此它负责通过SOAP库进行必要的转义.

然而:

我必须对数据库使用直接SQL调用,并且API提供了一种方法,您可以传入SQL查询(作为字符串)并获取结果行.不幸的是,这种方法不能为参数化查询提供任何便利.所以,是的,我实际上需要自己逃避.

那么,当然我可以制作自己的正则表达式,但是A:我很容易错过一些东西,而且B:真的吗?这没有实用工具类?我可以以某种方式使用SQL参数化引擎来吐出转义的查询吗?显然我知道你必须处理',但我已经阅读了关于退格字符注入方法,我确信还有其他我还不知道的......当然其他人已经编写了一个非常安全的版本?

范围:

  • 我对使用现成库的解决方案感兴趣,最好是内置库.
  • 如果我必须自己编写,我可以使用上面和其他地方的链接中的示例,但我真的不想写自己的,所以让我们试着不要告诉我如何做到这一点.
  • 不,我无法直接连接到Informix数据库并使用带参数化查询支持的Informix驱动程序.这将是一个很好的答案,但在这种情况下它被排除在外.

C.E*_*uis 0

ADO.NET 抽象不处理引号,它只是将它们传递给底层提供程序。因此,如果有一个现成的库,那将是一个特定于 Informix DB 的库,但我怀疑您是否会找到一个用于 .NET 的库,因为每个人都对 ADO.NET 或更高的抽象感到满意。

即使是以其mysql_real_escape_string功能而闻名的 PHP 似乎也没有与 Informix DB 相当的功能。

考虑到你的范围,我只能说,试图帮助解决你的问题。