亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
滦平县| 云梦县| 万宁市| 浮山县| 汉沽区| 永昌县| 湘西| 民乐县| 浦江县| 兴安盟| 桂平市| 清流县| 淳化县| 萝北县| 永福县| 专栏| 翁源县| 道真| 金坛市| 陕西省| 乌拉特中旗| 疏勒县| 天气| 乌海市| 阳高县| 达拉特旗| 台前县| 广水市| 应城市| 平原县| 霍邱县| 商都县| 通江县| 清丰县| 新巴尔虎左旗| 宜宾市| 浦城县| 河间市| 普安县| 闵行区| 博罗县|