web项目如何防sql注入


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>


上一篇:mybatis如何防sql注入

下一篇:如何在apache中绑定域名解析


Web sql注入
Copyright © 2002-2019 测速网 www.inhv.cn 皖ICP备2023010105号
测速城市 测速地区 测速街道 网速测试城市 网速测试地区 网速测试街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!

热门搜索 城市网站建设 地区网站制作 街道网页设计 大写数字 热点城市 热点地区 热点街道 热点时间 房贷计算器