什么方法能够有效应对SQL注入攻击

  介绍

这期内容当中小编将会给大家带来有关什么方法能够有效应对SQL注入攻击,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

能够有效应对SQL注入攻击的方法是:PreparedStatement(预编译语句集)。预编译语句集内置了处理SQL注入的能力,我们只需要使用它的setxxx方法传值即可。

<强> 1,(简单又有效的方法)PreparedStatement

采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setxxx方法传值即可。

使用好处:

(1)代码的可读性和可维护性。

(2) PreparedStatement尽最大可能提高性能。

(3)最重要的一点是极大地提高了安全性。

原理:

SQL注入只对SQL语句的准备(编译)过程有破坏作用,而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理,而不再对SQL语句进行解析,准备,因此也就避免了SQL注入问题。

<强> 2,使用正则表达式过滤传入的参数

要引入的包:

进口java.util.regex。*;

正则表达式:

私人字符串CHECKSQL=" ^(+) \ \砂\ \ s(+) |(+) \ \琼(+)\ \“新元;

判断是否匹配:

Pattern.matches (CHECKSQL targerStr);

下面是具体的正则表达式:

检测SQL元字符的正则表达式:<代码>/(\ % 27)| (\ & # 39;)| (\ \)| (\ % 23)| (#)/ix

修正检测SQL元字符的正则表达式:<代码>/((\ % 3 d) | (=)) (^ \ n) * ((\ % 27) | (\ & # 39;) | (\ \) | (\ % 3 b) |(:))/我

典型的SQL注入攻击的正则表达式:<代码>/\ w * ((\ % 27) | (\ & # 39;)) ((\ % 6 f) | |阿(\ % 4 f)) ((\ % 72) r | | (\ % 52))/ix

检测SQL注入,工会查询关键字的正则表达式:<代码>/((\ % 27)|(\ & # 39;))联盟/ix(\ % 27) |(\ & # 39;)

检测MS SQL Server SQL注入攻击的正则表达式:<代码>/exec (\ s | \ +) + (s | x) p \ w +/ix

等等……

<强> 3,字符串过滤

比较通用的一个方法:

(| |之间的参数可以根据自己程序的需要添加)

公共静态布尔sql_inj (String str) {   字符串inj_str=? # 39; |和|执行| |选择|删除插入| |更新   count | * | % | | | |大师中期从而向截断|字符|声明|;|和| - | + |,“;   字符串inj_stra[]=分裂(inj_str”|“);   for (int i=0;我和lt;inj_stra。长度;我+ +){   如果(str.indexOf (inj_stra[我]),gt;=0) {   返回true;   }   }   返回错误;   }

<强> 4,jsp中调用该函数检查是否包函非法字符

防止SQL从URL注入:

sql_inj。java代码:

包sql_inj;   进口java.net。*;   进口. io . *;   进口java.sql。*;   进口text . *;   进口以;   公开课sql_inj {   公共静态布尔sql_inj (String str) {   字符串inj_str=? # 39; |和|执行| |选择|删除插入| |更新   count | * | % | | | |大师中期从而向截断|字符|声明|;|和| - | + |,“;//这里的东西还可以自己添加   String [] inj_stra=inj_str.split (“\ \ |“);   for (int i=0;我和lt;inj_stra。长度;我+ +){   如果(str.indexOf (inj_stra[我]),gt;=0) {   返回true;   }   }   返回错误;   }   }

上述就是小编为大家分享的什么方法能够有效应对SQL注入攻击了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

什么方法能够有效应对SQL注入攻击