12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
网络知识 时间:2024-12-03 10:19:36
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
web项目防sql注入的方法:可以通过一个Filter来防止SQL注入,例如:packagecom.tarena.dingdang.filter;importjava.io.IOException;importjava.util.Enumeration;importjavax.ser
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
web项目防sql注入的方法:
可以通过一个Filter来防止SQL注入,例如:
packagecom.tarena.dingdang.filter;importjava.io.IOException;
importjava.util.Enumeration;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.http.HttpServletRequest;
publicclassAntiSqlInjectionfilterimplementsFilter{
publicvoiddestroy(){
//TODOAuto-generatedmethodstub
}
publicvoidinit(FilterConfigarg0)throwsServletException{
//TODOAuto-generatedmethodstub
}
publicvoiddoFilter(ServletRequestargs0,ServletResponseargs1,
FilterChainchain)throwsIOException,ServletException{
HttpServletRequestreq=(HttpServletRequest)args0;
HttpServletRequestres=(HttpServletRequest)args1;
//获得所有请求参数名
Enumerationparams=req.getParameterNames();
Stringsql="";
while(params.hasMoreElements()){
//得到参数名
Stringname=params.nextElement().toString();
//System.out.println("name==========================="+name+"--");
//得到参数对应值
String[]value=req.getParameterValues(name);
for(inti=0;i<value.length;i++){
sql=sql+value[i];
}
}
//System.out.println("============================SQL"+sql);
//有sql关键字,跳转到error.html
if(sqlValidate(sql)){
thrownewIOException("您发送请求中的参数中含有非法字符");
//Stringip=req.getRemoteAddr();
}else{
chain.doFilter(args0,args1);
}
}
//效验
protectedstaticbooleansqlValidate(Stringstr){
str=str.toLowerCase();//统一转为小写
StringbadStr="'|and|exec|execute|insert|select|delete|update|count|drop|*|%|chr|mid|master|truncate|"+
"char|declare|sitename|netuser|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(inti=0;i<badStrs.length;i++){
if(str.indexOf(badStrs[i])>=0){
returntrue;
}
}
returnfalse;
}
}
在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>
11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19