为什么我的功能参数化后,Veracode仍会报告CWE-89?

时间:2018-09-13 02:14:27

标签: security sql-injection veracode

根据CWE-89的推荐,我的以下功能已被参数化,但Veracode仍报告该功能可用CWE-89。

如您所见,该函数用于基于输入参数生成动态SQL查询。而且,只有 @PrimaryValue参数来自用户输入,而其他动态变量则位于SELECT,FROM,JOIN,ON和WHERE后面从数据库中查询(而不是从用户输入中查询)。

您如何看待这种情况?我可以为此提出缓解建议,还是必须多修改代码来解决问题?请给我建议。

enter image description here

1 个答案:

答案 0 :(得分:0)

您的代码有SQL注入问题。例如,用户可以将如下参数传递给此方法,参数“ intofile”:

* FROM Table1; DROP TABLE table2; intofile

使用此代码,用户可以将您的查询转换为3个查询,并在运行后将table2删除。

首先,您必须在只读事务中运行查询。之后,您必须对所有输入使用SQL转义方法以从中删除诸如DROP之类的关键字。