• ADADADADAD

    web项目如何防sql注入[ 网络知识 ]

    网络知识 时间:2024-12-03 10:19:36

    作者:文/会员上传

    简介:

    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>

    web项目如何防sql注入.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: sql注入web