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中文�

群英智防CDN,智能加速解决方案
标签� sql注入防御

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容�

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻�
7X24小时快速响�
一站式无忧技术支�
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 � 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部