<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    GalaxyPilot —— D.S


            生命不熄,戰斗不止
    數據加載中……

    通用防SQL注入函數java版

    public class StringUtil {

        public StringUtil() {
        }

        public static String replace(String str, String substr, String restr) {
            String[] tmp = split(str, substr);
            String returnstr = null;
            if (tmp.length != 0) {
                returnstr = tmp[0];
                for (int i = 0; i < tmp.length - 1; i++)
                    returnstr = dealNull(returnstr) + restr + tmp[i + 1];
            }
            return dealNull(returnstr);
        }

        public static String[] split(String source, String div) {
            int arynum = 0, intIdx = 0, intIdex = 0, div_length = div.length();
            if (source.compareTo("") != 0) {
                if (source.indexOf(div) != -1) {
                    intIdx = source.indexOf(div);
                    for (int intCount = 1;; intCount++) {
                        if (source.indexOf(div, intIdx + div_length) != -1) {
                            intIdx = source.indexOf(div, intIdx + div_length);
                            arynum = intCount;
                        } else {
                            arynum += 2;
                            break;
                        }
                    }
                } else
                    arynum = 1;
            } else
                arynum = 0;

            intIdx = 0;
            intIdex = 0;
            String[] returnStr = new String[arynum];

            if (source.compareTo("") != 0) {

                if (source.indexOf(div) != -1) {

                    intIdx = (int) source.indexOf(div);
                    returnStr[0] = (String) source.substring(0, intIdx);

                    for (int intCount = 1;; intCount++) {
                        if (source.indexOf(div, intIdx + div_length) != -1) {
                            intIdex = (int) source
                                    .indexOf(div, intIdx + div_length);

                            returnStr[intCount] = (String) source.substring(intIdx
                                    + div_length, intIdex);

                            intIdx = (int) source.indexOf(div, intIdx + div_length);
                        } else {
                            returnStr[intCount] = (String) source.substring(intIdx
                                    + div_length, source.length());
                            break;
                        }
                    }
                } else {
                    returnStr[0] = (String) source.substring(0, source.length());
                    return returnStr;
                }
            } else {
                return returnStr;
            }
            return returnStr;
        }

        public static boolean sql_inj(String str) {
            String inj_str = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|;|or|-|+|,";
            String inj_stra[] = split(inj_str, "|");
            for (int i = 0; i < inj_stra.length; i++) {
                if (str.indexOf(inj_stra[i]) >= 0) {
                    return true;
                }
            }
            return false;
        }

        private static String dealNull(String str) {
            String returnstr = null;
            if (str == null)
                returnstr = "";
            else
                returnstr = str;
            return returnstr;
        }

        public static void main(String[] args) {
            System.out.println(sql_inj("admin;"));
        }
    }

     jsp中調用該函數檢查是否包函非法字符
     <%
     if(request.getParameter("userID") != null)
        userID = request.getParameter("userID").trim();

      if (StringUtil.sql_inj(userID) || StringUtil.sql_inj(pwd)){
       %>
       <Script Language=javascript>alert('參數中包含非法字符!');history.back(-1);</Script>" ;
       <%
      }else{
      ……
     }%>
     StringUtil 是我的通用防注入函數的包名,該函數參考了ASP通用防SQL注入函數,做了一些修改。

    posted on 2006-03-30 16:58 舵手 閱讀(20341) 評論(12)  編輯  收藏

    評論

    # re: 通用防SQL注入函數java版  回復  更多評論   

    這個是不是有待商榷,比如or,這樣處理,任何包含字符串or的都會被毖掉
    2006-09-12 13:14 | lagrustler

    # re: 通用防SQL注入函數java版  回復  更多評論   

    這個函數只是用來過濾傳送給SQL字的參數,并不是所有串
    2006-09-29 14:26 | 舵手 QQ:8117892

    # re: 通用防SQL注入函數java版  回復  更多評論   

    JAVA版的是不是還要區分大小寫呀?
    2006-10-28 15:49 | 風投

    # re: 通用防SQL注入函數java版  回復  更多評論   

    多謝提醒,JSP版需要區分大小寫
    2006-10-30 17:25 | 舵手 QQ:8117892

    # re: 通用防SQL注入函數java版  回復  更多評論   

    大大大哥split方法在哪兒呢/
    2007-11-14 12:44 | 小注

    # re: 通用防SQL注入函數java版  回復  更多評論   

    java.lang.String類就有split這個方法,靜態的,可以直接調用。
    2007-11-15 08:47 | 舵手 QQ:8117892

    # re: 通用防SQL注入函數java版[未登錄]  回復  更多評論   

    這也叫通用?
    2008-01-10 14:37 | XXX

    # re: 通用防SQL注入函數java版  回復  更多評論   

    那么請樓上的給一個更通用的。
    2008-01-10 14:43 | 舵手 QQ:8117892

    # re: 通用防SQL注入函數java版[未登錄]  回復  更多評論   

    哪里有靜態split!!!!!! 不要誤導
    2008-08-29 10:03 | 過客

    # re: 通用防SQL注入函數java版  回復  更多評論   

    String確實沒有靜態的split方法,更正一下!
    向被我誤導的兄弟道歉!

    發現當時只貼了部分代碼,今天貼全一些。
    2008-08-29 13:21 | 舵手 QQ:8117892

    # re: 通用防SQL注入函數java版  回復  更多評論   

    好像不能防 001001010 這樣的吧!~
    2008-10-17 14:50 | FB

    # re: 通用防SQL注入函數java版  回復  更多評論   

    PreparedStatement preState = conn.prepareStatement(sql);
    還是用這個種方法吧!~
    2008-10-17 14:52 | FB

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 两个人看www免费视频| 男女啪啪免费体验区| 日韩午夜理论免费TV影院| 久久精品国产亚洲7777| a在线视频免费观看在线视频三区| 国产成人精品免费直播| 亚洲AV日韩AV无码污污网站| 国产成人免费网站在线观看 | 野花香高清在线观看视频播放免费| 国产精品亚洲综合专区片高清久久久| 青青青视频免费观看| 亚洲国产成人精品91久久久| 一级**爱片免费视频| 亚洲精品午夜国产VA久久成人| AAA日本高清在线播放免费观看| 国产亚洲成AV人片在线观黄桃| 久草免费福利视频| 亚洲大片免费观看| 免费爱爱的视频太爽了| 污网站在线免费观看| 久久精品国产精品亚洲精品| 日韩人妻一区二区三区免费| 亚洲18在线天美| 国产真人无遮挡作爱免费视频| 亚洲免费无码在线| 久久国产精品亚洲一区二区| 国内精品免费麻豆网站91麻豆| 亚洲另类无码专区首页| 国产成人精品曰本亚洲79ren| 日本免费人成视频在线观看| 国产亚洲精品影视在线| 亚洲国产中文v高清在线观看| a级毛片毛片免费观看久潮喷| 亚洲图片校园春色| 亚洲国产aⅴ综合网| 1000部拍拍拍18勿入免费视频下载| 亚洲午夜无码久久| 亚洲日韩激情无码一区| 91香蕉视频免费| 两个人日本WWW免费版| ASS亚洲熟妇毛茸茸PICS|