JAVA中过滤特殊字符预防SQL注入

package cn.com.hbivt.util;
public class StringUtils {
       //过滤通过页面表单提交的字符
       private static String[][] FilterChars={{"<","&lt;"},{">","&gt;"},{" ","&nbsp;"},{"\"","&quot;"},{"&","&amp;"},
                                       {"/","/"},{"\\","\"},{"\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]);
         }
       }
}

原文地址:https://www.cnblogs.com/KeKang-Supreme/p/8425690.html

时间: 2024-11-05 03:07:50

JAVA中过滤特殊字符预防SQL注入的相关文章

PHP POST, GET 参数过滤,预防sql注入函数

1. 实际过滤函数 可适当修改其中的正则表示式 1 static public function filterWords(&$str) 2 { 3 $farr = array( 4 "/<(\\/?)(script|i?frame|style|html|body|title|link|meta|object|\\?|\\%)([^>]*?)>/isU", 5 "/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/

sql注入的原理是什么,怎么预防sql注入

为什么会产生sql注入: 主要原因,对用户输入的绝对信任,相信所有用户的输入都是可信的,没有对用户输入的语句进行过滤或者筛选,直接放到sql语句中进行拼接,从而导致了sql注入的产生 例如: <php? id = $_GET['id']; sql = "select * from tables where id=$id limit 0,1"; ....... ?> 如果是正常的id等于数值之类,是没有问题的,但是id如果被恶意更改或者更改,我们原本的逻辑就会出现一系列的问题

利用PreparedStatement预防SQL注入

1.什么是sql注入 SQL 注入是用户利用某些系统没有对输入数据进行充分的检查,从而进行恶意破坏的行为. 例如登录用户名采用  ' or 1=1 or username=‘,后台数据查询语句就变成 sql = select * from users where username='' or 1=1 or username='' and password='"+password+"'",由于sql中and的优先级比or高,所以整条查询语句等价于: sql = select *

9.7预防sql注入

检测实例:a' or 'a'='a [注]以下方法可以预防sql注入:其中prepareStatment.setString();其中的第一个参数为绑定sql语句中问号的位置(这里以1下标开始) 原文地址:https://www.cnblogs.com/jiafeng1996/p/12335432.html

输入值/表单提交参数过滤有效防止sql注入的方法

输入值/表单提交参数过滤,防止sql注入或非法攻击的方法: 代码如下: /** * 过滤sql与php文件操作的关键字 * @param string $string * @return string * @author zrp <[email protected]> */ private function filter_keyword( $string ) { $keyword = select|insert|update|delete|\|\/\*|\*|\.\.\/|\.\/|union

怎么预防sql注入攻击

假设sql是搜索用户A的文章,sql会是这样: select * from table where owner='A'; sql注入攻击者会修改用户名来实现攻击,例如把A 改成A' or 1='1 组合后的sql语句: select * from table where owner='A' or 1='1'; 这样就可以获取所有用户的文章 可见,sql攻击就是把部分数据内容伪造成sql语句,例如上面把 or 1=伪造成sql语句来实现攻击 而伪造的方法,就是在内容里面加入引号,所以预防sql注入

预防SQL注入攻击

/** * 预防SQL注入攻击 * @param string $value * @return string */function check_input($value){ // 去除斜杠 if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // 如果不是数字则加引号 if (!is_numeric($value)) { $value = "'" . mysql_real_escape_string($valu

XSS过滤JAVA过滤器filter 防止常见SQL注入

Java项目中XSS过滤器的使用方法. 简单介绍: XSS : 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的. sql注入所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执

如何对抗、预防 SQL注入 攻击

一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. 二.SQL注入攻击的总体思路 1.寻找到SQL注入的位置 2.判断服务器类型和后台数据库类型 3.针对不通的服务器和数据库特点进行SQL注入攻击 三.SQL注入攻击实例 比如在一个登录界面,要求输入用户名和密码: 可以这样输入实现免帐号登录: 用户名: 'or 1 = 1 – 密 码: 点登陆,如若没有做特殊处理,那么这个