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

Gop*_*opi 5 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+ "%");
Run Code Online (Sandbox Code Playgroud)

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

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

2. '

3. "
Run Code Online (Sandbox Code Playgroud)

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

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

它不起作用'%2b(select*from(select(sleep(20)))a)%2b'.

问题详情:

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

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