SQL注入防御有哪些方法?这三招很有用
Admin 2021-12-23 群英技术资� 212 次浏�
SQL注入一种常见的数据库破解手�,�也是全球互联网中最频繁出现的漏洞问题。数据的重要性想必不用多说,由此可见SQL注入的影响有多大,因此做好SQL注入防御很重要,对此下文就给大家分享几个方法�
下面针对JSP,说一下SQL注入防御的应对方法:
1、(简单又有效的方法)PreparedStatement
采用预编译语句集,它内置了处理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)p\w+/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; }
凡涉及到执行的SQL中有变量时,用JDBC(或者其他数据持久层)提供的如:PreparedStatement就可� ,切记不要用拼接字符串的方法就可以了�
以上就是关于SQL注入防御的方法的介绍,上述几种方法有一定的参考价值,有需要的朋友可以了解看看,希望对大家做好SQL注入防御有帮助,想要了解更多可以继续浏览群英网络其他相关的文章�
文本转载自PHP中文�
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容�
猜你喜欢
这篇文章我们来了解一下JavaScript原型链污染攻击,对于JavaScript原型链污染有一些朋友不清楚是什么,对此本文就给大家来介绍一下,感兴趣的朋友接下来就跟随小编来了解看看吧�
CDN动态加速技�
零成本搭建个人博客之图床和cdn加�
CDN与缓存的归纳理解
随着网络攻击越来越多,现在大家的网络安全意识也有所提高,但是各种网络攻击层出不穷,让人防不胜防,一些不是很常见的攻击类型大家可能会不注意,例如服务器慢速攻击,那么究竟服务器慢速攻击是什么意思?攻击方式是什么呢�
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所�
增值电信经营许可证 : B1.B2-20140078