|
|
@ -17,6 +17,7 @@ import java.io.IOException; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
*<p> |
|
|
|
*<p> |
|
|
|
|
|
|
|
* 扩展 Security 默认 StrictHttpFirewall(XSS)脚本攻击过滤 |
|
|
|
* XSS、sql过滤处理 |
|
|
|
* XSS、sql过滤处理 |
|
|
|
*</p> |
|
|
|
*</p> |
|
|
|
* |
|
|
|
* |
|
|
@ -26,10 +27,11 @@ import java.io.IOException; |
|
|
|
@Slf4j |
|
|
|
@Slf4j |
|
|
|
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { |
|
|
|
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { |
|
|
|
|
|
|
|
|
|
|
|
private static String[] SQL_KEYWORDS = {"master", "truncate", "insert", "select" |
|
|
|
private static final String[] SQL_KEYWORDS = {"master", "truncate", "insert", "select" |
|
|
|
, "delete", "update", "declare", "alter", "drop", "sleep"}; |
|
|
|
, "delete", "update", "declare", "alter", "drop", "sleep"}; |
|
|
|
//sql 替换字符
|
|
|
|
|
|
|
|
private static String REPLACE_STR = ""; |
|
|
|
// sql 替换字符
|
|
|
|
|
|
|
|
private static final String REPLACE_STR = ""; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* @param request |
|
|
|
* @param request |
|
|
@ -43,18 +45,22 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { |
|
|
|
String[] values = super.getParameterValues(name); |
|
|
|
String[] values = super.getParameterValues(name); |
|
|
|
if (values != null) { |
|
|
|
if (values != null) { |
|
|
|
int length = values.length; |
|
|
|
int length = values.length; |
|
|
|
String[] escapseValues = new String[length]; |
|
|
|
String[] escapeValues = new String[length]; |
|
|
|
for (int i = 0; i < length; i++) { |
|
|
|
for (int i = 0; i < length; i++) { |
|
|
|
// 防xss攻击和过滤前后空格
|
|
|
|
// 防xss攻击和过滤html相关脚本
|
|
|
|
escapseValues[i] = HtmlUtil.filter(values[i]).trim(); |
|
|
|
escapeValues[i] = HtmlUtil.filter(values[i]).trim(); |
|
|
|
//防sql注入
|
|
|
|
// 防sql注入
|
|
|
|
escapseValues[i] = cleanSqlKeyWords(escapseValues[i]); |
|
|
|
escapeValues[i] = cleanSqlKeyWords(escapeValues[i]); |
|
|
|
} |
|
|
|
} |
|
|
|
return escapseValues; |
|
|
|
return escapeValues; |
|
|
|
} |
|
|
|
} |
|
|
|
return super.getParameterValues(name); |
|
|
|
return super.getParameterValues(name); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) { |
|
|
|
|
|
|
|
System.out.println(new HTMLFilterUtil().filter("<p>123</p>").trim()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private String cleanSqlKeyWords(String value) { |
|
|
|
private String cleanSqlKeyWords(String value) { |
|
|
|
String paramValue = value; |
|
|
|
String paramValue = value; |
|
|
|
for (String keyword : SQL_KEYWORDS) { |
|
|
|
for (String keyword : SQL_KEYWORDS) { |
|
|
|