转义SQL参数

时间:2009-12-10 16:31:53

标签: .net sql nhibernate hql parameters

我需要解决我报告的here的NHibernate错误。从本质上讲,NHibernate将为同一个HQL参数生成多个SQL参数,这会导致在分组构造中使用参数的查询出现问题。

在修复bug之前,我想我只是将参数连接到HQL中。显然这很容易被SQL注入,除非我转义参数值(因为它是HQL,我不能使用常规的ADO.NET参数)。

System.Data中是否有一个方法可以转义参数值,从而可以安全地连接到SQL字符串中?我正在使用SQL Server 2005,我很乐意在短期内对该平台做一些特定的事情,直到修复NHibernate错误。

谢谢, 肯特

1 个答案:

答案 0 :(得分:1)

据我所知,您无法使用任何内容(类似于Oracle DBMS_ASSERT库的内容可以使用if it were available in Sql Server)。你可以做的一件事就是保护你,就是简单地检查你的参数值(即你要连接什么)对任何空格都是如此,如果包含它就抛出异常 - 这应该可以保护你免受任何破坏性的攻击。注射。当然,如果你连接一个不需要能够找到实际包含空格的值的参数,这只是一个可行的解决方案,但我认为这将是一个有限的场景。