Java防SQL注⼊过滤器()代码
原⽂出⾃:
前⾔
浅谈SQL注⼊:
所谓SQL注⼊,就是通过把SQL命令插⼊到Web表单提交或输⼊域名或页⾯请求的查询字符串,最终达到欺骗服务器执⾏恶意的SQL命令,达到⼀定的⾮法⽤途。
解决办法
1、配置l
<web-app>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!-- 防SQL注⼊过滤 -->
<filter>
<filter-name>SqlInjectFilter</filter-name>
<filter-class>com.filter.SqlInjectFilter</filter-class>
<!-- 过滤前台传⼊的参数,可⼿动添加或删减,以“|”分割 -->
<init-param>
<param-name>sqlInjectStrList</param-name>
<param-value>'|or|and|;|-|--|+|,|like|//|/|*|%|#</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SqlInjectFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
2、过滤器SqlInjectFilter.java类
package com.filter;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
/**
* SQL注⼊过滤器
* @author CSDN:seesun2012
* @version 0.0.1-SNAPSHOT
* @Date 2018-01-14
*/
public class SqlInjectFilter implements Filter{
public FilterConfig config;
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httprequest = (HttpServletRequest) request;
// 获得所有请求参数名
Enumeration<?> params = ParameterNames();
String sql = "";
while (params.hasMoreElements()) {
// 得到参数名
String name = Element().toString();
// 得到参数对应值
String[] value = ParameterValues(name);
for (int i = 0; i < value.length; i++) {
sql = sql + value[i];
}
}
// 过滤掉的SQL关键字,可以⼿动添加
String sqlInjectStrList = InitParameter("sqlInjectStrList");
if (sqlValidate(sql, sqlInjectStrList)) {
throw new IOException("请输⼊有效字符");
// 重定向或跳转,略...
} else {
chain.doFilter(request, response);
}
}
// 校验SQL
protected static boolean sqlValidate(String str, String sqlInjectStrList) {
// 统⼀转为⼩写
str = LowerCase();
/
/ 转换为数组
String[] badStrs = sqlInjectStrList.split("\\|");
for (int i = 0; i < badStrs.length; i++) {
// 检索
if (str.indexOf(badStrs[i]) >= 0) {
return true;
}
}
return false;
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
config = filterConfig;
spring framework高危漏洞}
}
备注
相关说明⽂档:
相关测试案例:
本⽂仅供Java相关学习交流与Web防御,如果⽤于⾮法攻击或⾮法操作以及商业攻击,后果⾃负!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论