JAVA中過濾特殊字符預防SQL注入


package cn.com.hbivt.util;   
public class StringUtils {   
       //過濾通過頁面表單提交的字符   
       private static String[][] FilterChars={{"<","&lt;"},{">","&gt;"},{" ","&nbsp;"},{"\"","&quot;"},{"&","&amp;"},   
                                       {"/","&#47;"},{"\\","&#92;"},{"\n","<br>"}};   
       //過濾通過javascript腳本處理並提交的字符   
       private static String[][] FilterScriptChars={{"\n","\'+\'\\n\'+\'"},   
                                                           {"\r"," "},{"\\","\'+\'\\\\\'+\'"},   
                                                                   {"\'","\'+\'\\\'\'+\'"}};   
  
       /**  
        * 用特殊的字符連接字符串  
        * @param strings 要連接的字符串數組  
        * @param spilit_sign 連接字符  
        * @return 連接字符串  
        */  
       public static String stringConnect(String[] strings,String spilit_sign){   
         String str="";   
         for(int i=0;i<strings.length;i++){   
           str+=strings[i]+spilit_sign;   
         }   
         return str;   
       }   
  
       /**  
        * 過濾字符串里的的特殊字符  
        * @param str 要過濾的字符串  
        * @return 過濾后的字符串  
        */  
       public static String stringFilter(String str){   
         String[] str_arr=stringSpilit(str,"");   
         for(int i=0;i<str_arr.length;i++){   
           for(int j=0;j<FilterChars.length;j++){   
             if(FilterChars[j][0].equals(str_arr[i]))   
               str_arr[i]=FilterChars[j][1];   
           }   
         }   
         return (stringConnect(str_arr,"")).trim();   
       }   
  
       /**  
* 過濾腳本中的特殊字符(包括回車符(\n)和換行符(\r))  
* @param str 要進行過濾的字符串  
* @return 過濾后的字符串  
* 2004-12-21 閆  
*/  
public static String stringFilterScriptChar(String str){   
String[] str_arr=stringSpilit(str,"");   
for(int i=0;i<str_arr.length;i++){   
   for (int j = 0; j < FilterScriptChars.length; j++) {   
     if (FilterScriptChars[j][0].equals(str_arr[i]))   
       str_arr[i] = FilterScriptChars[j][1];   
   }   
}   
return(stringConnect(str_arr,"")).trim();   
}   
  
  
       /**  
        * 分割字符串  
        * @param str 要分割的字符串  
        * @param spilit_sign 字符串的分割標志  
        * @return 分割后得到的字符串數組  
        */  
       public static String[] stringSpilit(String str,String spilit_sign){   
         String[] spilit_string=str.split(spilit_sign);   
         if(spilit_string[0].equals(""))   
         {   
           String[] new_string=new String[spilit_string.length-1];   
           for(int i=1;i<spilit_string.length;i++)   
             new_string[i-1]=spilit_string[i];   
             return new_string;   
         }   
         else  
           return spilit_string;   
       }   
  
       /**  
        * 字符串字符集轉換  
        * @param str 要轉換的字符串  
        * @return 轉換過的字符串  
        */  
       public static String stringTransCharset(String str){   
         String new_str=null;   
         try{   
             new_str=new String(str.getBytes("iso-8859-1"),"GBK");   
         }   
         catch(Exception e){   
           e.printStackTrace();   
         }   
         return new_str;   
       }   
  
       /**  
        * 測試字符串處理類  
        * @param args 控制台輸入參數  
        */  
       public static void main(String[] args){   
  
         //測試字符串過濾   
         String t_str1="<h1>StringDispose字符串 處理\n\r\'\"</h1>";   
         System.out.println("過濾前:"+t_str1);   
         System.out.println("過濾后:"+StringUtils.stringFilter(t_str1));   
         //測試合並字符串   
         String[] t_str_arr1={"PG_1","PG_2","PG_3"};   
         String t_str2=StringUtils.stringConnect(t_str_arr1,",");   
         System.out.println(t_str2);   
         //測試拆分字符串   
         String[] t_str_arr2=StringUtils.stringSpilit(t_str2,",");   
         for(int i=0;i<t_str_arr2.length;i++){   
           System.out.println(t_str_arr2[i]);   
         }   
       }   
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM