【发布时间】:2019-02-17 17:14:27
【问题描述】:
根据 CWE-89 的推荐,我下面的函数已经被参数化了,但是 Veracode 仍然报告 CWE-89 在该函数中可用。
如您所见,该函数用于根据输入参数生成动态 SQL 查询。而且,只有@PrimaryValue参数来自用户输入,而其他动态变量在SELECT、FROM、JOIN、ON和WHERE后面从数据库中查询(不是从用户输入)。
您如何看待这个案例?我可以为此提出缓解措施还是我必须更多地修改代码来解决问题?请给我建议。
【问题讨论】:
-
我知道您说要连接到查询中的变量来自配置数据库,但是 Veracode 怎么知道呢?它所看到的只是将代码变量连接到 SQL 查询中。它不能假设这些值是有效的 SQL 标识符。 SQL注入不仅来自用户输入,它可以是任何内容。 SQL 注入也不总是恶意的,它可能是一个简单的错误。此类事故更有可能导致无效的 SQL 查询,而不是数据泄露,但仍算作 SQL 注入。
标签: security sql-injection veracode