提问者:小点点

使用[Dapper]的项目被Veracode报告为CWE ID 89(SQL命令中使用的特殊元素的不适当中性化)


我们有一个。NET 4.0项目,正在被Veracode扫描,以便获得安全认证。

报告详细文件&行号似乎是指Dapper:

ourowndll.dll dev/.../dapper net40/sqlmapper.cs 1138

app_browsers.dll dev/.../sqlmapperasync.cs 126

我想知道是否有任何方法可以防止这种漏洞。


共1个答案

匿名用户

我不熟悉VeraCode,然而正如@Kristen Waite Jukowski指出的那样,您的问题可能是由于您的一些查询没有参数化,在这种情况下,它们被正确地识别为容易受到SQL注入的攻击。

或者,一个类似的问题(与相同的问题有关,但与OrmLite)可能会对此有所了解。与OrmLite类似,由于dapper提供了编写原始SQL查询的工具,这些查询可以由未参数化的输入组成(例如,通过字符串连接),因此使用它可能被认为是一个漏洞,即使特定项目中的每个查询目前都是完全参数化的。这个问题的答案(在您的情况下可能不可行)是用实体框架取代现有的ORM:

在使用VeraCode读取代码期间,建议的正确补救措施是用EntityFramework 6.1替换ServiceStack ORM。

从该问题中的评论来看:

不同之处在于EF中,执行上下文实现IDbCommand,但CreateDataAdapter和其他允许动态sql抛出异常的API已经实现。EF中没有允许动态sql的代码路径,而不首先通过类似于OWASP的过滤机制。