中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
廉江市| 攀枝花市| 衡东县| 虎林市| 维西| 长宁县| 麻江县| 平舆县| 钟祥市| 苏尼特右旗| 兴城市| 兰坪| 湛江市| 汪清县| 东方市| 瓦房店市| 香港| 大田县| 旬邑县| 手游| 长寿区| 凯里市| 郸城县| 新绛县| 五原县| 冷水江市| 溧水县| 天水市| 绥中县| 华蓥市| 黑龙江省| 琼中| 四会市| 凤冈县| 六安市| 临沧市| 仙游县| 遵化市| 边坝县| 汉沽区| 久治县|