如何摆脱盲目的sql注入?

Posted

技术标签:

【中文标题】如何摆脱盲目的sql注入?【英文标题】:How to get rid of blind sql injection? 【发布时间】:2013-09-08 19:01:01 【问题描述】:

我们在表示层使用 jsf primefaces,并使用 hibernate 作为 ORM 工具。 在运行安全工具来检查我们代码的安全级别时,我们得到 一些盲目的 sql 注入警告。 我知道这个漏洞来的基本原因。为了确认,我检查了大部分 编写的查询并发现它们都遵循正确的模式

    SELECT col  FROM table  WHERE col = :Identifier

然后我们使用 getNamedQuery 来检索查询。要填充标识符,我们 正在使用 setter 方法。

安全检查工具生成的报告包含一些 用于或等的 UI 组件 ID。 并将问题描述为

以下更改已应用于原始请求: - 将参数 'form:someDropDown_input' 的值设置为 '0%2B0%2B0%2B1' - 将参数'form:someDropDown_input'的值设置为'12345%2B12345%2B1'

在其他一些地方,问题也显示为

以下更改已应用于原始请求: - 将参数'javax.faces.partial.execute'的值设置为'%40all%27+and+%27f%27%3D%27f'

我几乎无法从错误报告中理解任何内容。 所以请指导我问题可能出在哪里。

【问题讨论】:

您确定这是错误报告吗? “应用了以下更改......”这句话听起来更像是一个日志文件(只是说明安全检查工具做了什么)。这听起来不像是安全问题。 是的,它完全按照我在报告中的方式打印。我认为该工具试图篡改用户输入。如果成功,我认为是一个问题。但不确定。跨度> 【参考方案1】:

“安全工具”的许多结果,例如您似乎正在运行的 IBM AppScan,都只是猜测。 SQL 盲注是一种检测,其可靠性甚至低于平均水平。

由于您使用的是参数化查询,所以没问题。告诉运行此工具的人这是误报。如果他们不同意,请他们向您展示如何利用这一点。

【讨论】:

以上是关于如何摆脱盲目的sql注入?的主要内容,如果未能解决你的问题,请参考以下文章

Sonar PreparedStatement - sql注入

Blind SQL injection:盲注详解

SQL注入漏洞之联合查询

DataTable.Select 注入

什么叫sql注入,如何防止sql注入

什么是sql注入如何防止sql注入