Java正则表达式,以防止SQL注入

时间:2018-01-16 16:49:12

标签: java regex sql-injection

在我的burp suite测试期间,即使在使用预准备语句后,该工具也会报告一些SQL注入漏洞

例如:

SELECT address, state, status, plan, remarks, FROM archive  
LEFT OUTER JOIN site_mappings ON site_dn = mrbts AND
siteid = id where ((UPPER(technology) like 
UPPER(?)))

 ps.setString(1, "%" +value+ "%");

以下是该工具使用的几个SQL注入字符串

1. '%2b(select*from(select(sleep(20)))a)%2b'

2. '

3. "

我有过滤功能白色列出值并提高SQLException以防止注入。

Pattern pattern = Pattern.compile("['\"*$]");
        Matcher matcher = pattern.matcher(value);
        if (matcher.find()) {
            throw new SQLException("Invalid filter value");
        }

它不适用于'%2b(select*from(select(sleep(20)))a)%2b'

问题详情:

在参数中提交了有效负载'+(select*from(select(sleep(20)))a)+'。应用程序花了20011毫秒来响应请求,而原始请求的响应时间为24毫秒,表明注入的SQL命令导致了时间延迟。

如何创建正则表达式以防止SQL注入?

0 个答案:

没有答案