91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

web項目如何防sql注入

小新
220
2021-02-05 09:38:10
欄目: 云計算

web項目如何防sql注入

web項目防sql注入的方法:

可以通過一個Filter來防止SQL注入,例如:

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
黄平县| 黄浦区| 阜康市| 双流县| 平凉市| 搜索| 博客| 元朗区| 南和县| 凤山市| 金昌市| 鄂伦春自治旗| 仪征市| 鄯善县| 西昌市| 靖安县| 沈阳市| 理塘县| 合肥市| 鹤庆县| 平乐县| 黔东| 莱西市| 渝中区| 漳浦县| 中江县| 玉龙| 忻州市| 法库县| 盖州市| 土默特右旗| 利川市| 浮梁县| 依安县| 大名县| 太仓市| 樟树市| 五原县| 永胜县| 巫山县| 清水河县|