Linux 拨号vps windows公众号手机端

web项目如何防sql注入

lewis 7年前 (2018-11-29) 阅读数 8 #VPS/云服务器
文章标签 sql注入Web

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>


版权声明

本文仅代表作者观点,不代表米安网络立场。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门