java类防止sql注入
来源:互联网 发布:淘宝怎么更改退款金额 编辑:程序博客网 时间:2024/05/17 01:43
package
com.tarena.dingdang.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;
public
class
AntiSqlInjectionfilter
implements
Filter {
public
void
destroy() {
// TODO Auto-generated method stub
}
public
void
init(FilterConfig arg0)
throws
ServletException {
// TODO Auto-generated method stub
}
public
void
doFilter(ServletRequest args0, ServletResponse args1,
FilterChain chain)
throws
IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)args0;
HttpServletRequest res=(HttpServletRequest)args1;
//获得所有请求参数名
Enumeration params = req.getParameterNames();
String sql =
""
;
while
(params.hasMoreElements()) {
//得到参数名
String name = params.nextElement().toString();
//System.out.println("name===========================" + name + "--");
//得到参数对应值
String[] value = req.getParameterValues(name);
for
(
int
i =
0
; i < value.length; i++) {
sql = sql + value[i];
}
}
//System.out.println("============================SQL"+sql);
//有sql关键字,跳转到error.html
if
(sqlValidate(sql)) {
throw
new
IOException(
"您发送请求中的参数中含有非法字符"
);
//String ip = req.getRemoteAddr();
}
else
{
chain.doFilter(args0,args1);
}
}
//效验
protected
static
boolean
sqlValidate(String str) {
str = str.toLowerCase();
//统一转为小写
String badStr =
"'|and|exec|execute|insert|select|delete|update|count|drop|*|%|chr|mid|master|truncate|"
+
"char|declare|sitename|net user|xp_cmdshell|;|or|-|+|,|like'|and|exec|execute|insert|create|drop|"
+
"table|from|grant|use|group_concat|column_name|"
+
"information_schema.columns|table_schema|union|where|select|delete|update|order|by|count|*|"
+
"chr|mid|master|truncate|char|declare|or|;|-|--|+|,|like|//|/|%|#"
;//过滤掉的sql关键字,可以手动添加
String[] badStrs = badStr.split(
"\\|"
);
for
(
int
i =
0
; i < badStrs.length; i++) {
if
(str.indexOf(badStrs[i]) >=
0
) {
return
true
;
}
}
return
false
;
}
}
<!--在web.xml文件中的配置-->
<!-- 防止SQL注入的过滤器 -->
<filter>
<filter-name>antiSqlInjection</filter-name>
<filter-
class
>com.tarena.dingdang.filter.AntiSqlInjectionfilter</filter-
class
>
</filter>
<filter-mapping>
<filter-name>antiSqlInjection</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
0 0
- java类防止sql注入
- java防止sql注入
- java 防止SQL注入
- java防止SQL注入
- JAVA防止SQL注入
- Java防止SQL注入
- java防止sql注入
- Java防止SQL注入
- java防止SQL注入
- Java防止SQL注入
- java 防止sql注入
- Java防止SQL注入
- Java防止SQL注入
- Java防止SQL注入
- Java防止SQL注入
- Java防止SQL注入
- java类过滤器,防止页面sql注入
- java类过滤器,防止页面sql注入
- 全国省市区数据-json
- MDK5keil仿真调试程序报错:*** error 65: access violation at 0x40021000 : no 'write' permission
- POJ 3140 Contestants Division 树形dp
- tensorflow scope命名方法(variable_scope()与name_scope()解析)
- Nginx --sendfile配置
- java类防止sql注入
- zfs日常管理以及替换损坏磁盘
- Android 保存和恢复activity的状态数据
- Unity中内嵌网页插件UniWebView使用总结
- 排序算法(5)--快速排序
- 椭圆与圆的拟合
- 内核自带LED驱动移植
- ac_automation 模板
- numpy库