SQL注入防御有哪些方法?这三招很有用
Admin 2021-12-23 群英技术资讯 605 次浏览
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-内容推送网络
随着互联网的快速发展,黑客技术也在不断的进步,黑客攻击层出不穷,让人防不胜防。一旦服务器遭受黑客攻击,造成的影响可想而知,那么常见的黑客攻击方式有什么,我们该如何做好安全防御呢?
怎样确保Web服务器的安全?当前,门户网站被攻击,被恶意篡改,服务器中毒等事件时有发生,给不少网站都造成很大的损失。因此为了确保以及提高Web服务器的安全,做好防御是至关重要的,对此,我们可以从以下两方面入手。
近些年,网络攻击不断,黑客攻击手段有很多,让人防不胜防。这篇文章我们就来了解一下APT攻击,那么APT攻击究竟是什么,有什么影响,以及该如何防御呢?
这篇文章给大家分享的是有关怎样做好csrf防御的方法。csrf是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。做好csrf防御是很重要的,下文我们就来看看目前防御 CSRF 攻击主要策略。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008