重庆小潘seo博客

当前位置:首页 > 重庆网络营销 > 小潘杂谈 >

小潘杂谈

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

时间:2020-09-16 09:30:11 作者:重庆seo小潘 来源:
1、(简单又有效的方法)PreparedStatement (推荐学习:mysql教程) 采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值即可。 使用好处: (1)代码的可读性和可维护性. (2)PreparedStatement尽最大可能提高性能. (3)最重要的

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

1、(简单又有效的方法)PreparedStatement

(推荐学习:mysql教程)

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

使用好处:

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

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

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

原理:

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

2、使用正则表达式过滤传入的参数

要引入的包:import java.util.regex.*;正则表达式:private String CHECKSQL = “^(.+)\sand\s(.+)|(.+)\sor(.+)\s$”;判断是否匹配:Pattern.matches(CHECKSQL,targerStr);下面是具体的正则表达式:

检测SQL meta-characters的正则表达式 : /(%27)|(')|(--)|(%23)|(#)/ix

修正检测SQL meta-characters的正则表达式 : /((%3D)|(=))[^n]*((%27)|(')|(--)|(%3B)|(:))/i

典型的SQL 注入攻击的正则表达式 : /w*((%27)|('))((%6F)|o|(%4F))((%72)|r|(%52))/ix

检测SQL注入,UNION查询关键字的正则表达式 : /((%27)|('))union/ix(%27)|(')

检测MS SQL Server SQL注入攻击的正则表达式: /exec(s|+)+(s|x)pw+/ix

等等…..

3、字符串过滤

比较通用的一个方法:

(||之间的参数可以根据自己程序的需要添加)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;}4、jsp中调用该函数检查是否包函非法字符

防止SQL从URL注入:

sql_inj.java代码:package sql_inj;import java.net.*;import java.io.*;import java.sql.*;import java.text.*;import java.lang.String;public class sql_inj{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=inj_str.split("\|");for (int i=0 ; i < inj_stra.length ; i++ ){if (str.indexOf(inj_stra[i])>=0){return true;}}return false;}}以上就是能够有效应对SQL注入攻击的方法是什么的详细内容,更多请关注小潘博客其它相关文章!