-1

我收到了一个 checkmarx HIGH 漏洞问题 SQL 注入。

要求是用户可以在文本区域中插入任何 SQL 查询,单击提交时,此查询通过请求有效负载和服务器端,它使用请求正文注释通过层传递。

漏洞 1 :- 说这个请求没有被清理。

漏洞2:-第二个地方是我使用Statement对象为sql查询执行executeUpdate,因为我不能使用PreparedStatement,没有可用的动态参数。它在文本区域中的任何查询都将直接执行。

我已经尝试过 HtmlUtils.htmlEscape(sqlQuery) 和 StringEscapeUtils 但无法解决漏洞。

要求是这样的,只是我必须为用户提供文本区域以放置查询,以便服务器可以获取并直接执行它。

有什么建议吗?怎么解决!!谢谢

4

2 回答 2

1

CW 答案:

没有办法让用户安全地输入任意 SQL。

Checkmarx 警告说这是一个安全漏洞是正确的。

更改应用程序的设计,使其不接受任意用户输入并将其作为代码执行(例如 SQL 查询)。这是注入攻击的定义。

于 2018-03-07T18:44:59.900 回答
0

解决 SQL 注入只有一种解决方案:参数化您的查询!

https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet

于 2018-11-30T10:47:07.453 回答