SQL注入防御有哪些方法?这三招很有用
Admin 2021-12-23 群英技术资讯 929 次浏览
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中文网
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
服务器的安全问题会直接影响到放置其上的网站安全,因此做好服务器的安全防范是很重要的。这篇我们来了解一下常见的服务器安全问题及风险隐患有什么,这对于我们了解服务器的安全性及做好防护都有一定的帮助。接下来我们一起看看吧。
程序员要搞明白CDN,这篇应该够了
零成本搭建个人博客之图床和cdn加速
本文主要给大家介绍的如何突破入侵检测系统,了解破入侵检测系统的方法对于我们更好的防御以及完善入侵检测系统都是有帮助的,下面我们一起来看看都有哪些方法。
windows环境下,spring boot服务使用docker打包成镜像并推送到云服务器私有仓库
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008