防止SQL注入的五种方法汇站网 - 汇站网

防止SQL注入的五种方法

2021-08-18 0 316

首先,SQL 介绍
SQL 注入是更常见的网络攻击之一。它不使用操作系统的错误来实现攻击,但程序员编程的疏忽,通过 SQL 语句,实现无帐户登录,甚至篡改数据库。


二,整体思想?? SQL 注射攻击
1.寻找 SQL 注入的位置
2.判断服务器类型和背景数据库类型
3. SQL 注入攻击对无关的服务器和数据库功能

第三,SQL 注入攻击实例
例如,在登录界面中,询问用户名和密码:
您可以实现这样的免除账户:
用户名:’或 1 = 1 –
密码:
如果您不进行特殊处理,那么此非法用户非常自豪地登录。(当然,已经处理了某些语言的数据库 API
为什么是这样?让我们分析它:
在理论上,将在后台认证程序中存在以下 SQL 语句:

String sql = "select * from user_table where username=

' "+userName+" ' and password=' "+password+" '";

当输入了上面的用户名和密码,上面的 SQL 语句变成:

SELECT * FROM user_table WHERE username=


	
'’or 1 = 1 -- and password='’

分析 SQL 语句: 在条件之后,USERNAME =“或 1 = 1 用户名相等”或 1 = 1,则此条件将成功; 然后添加两个回来 – 这意味着评论,它将稍后发表评论,让他们不起作用,这样的语句将始终正确执行,用户易于欺骗系统,获得法律身份。 如果执行情况,这仍然相对温和.

SELECT * FROM user_table WHERE


username='' ;DROP DATABASE (DB Name) --' and password=''

….后果可以想象……
第四,正确的方法
让我谈谈 JSP,说正确的方法:
1.(简单有效的方法)预付术
使用预编译的语句集,它内置于处理 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.字符串过滤

比较通用的一个方法:

(||之间的参数可以根据自己程序的需要添加)

4.jsp 中调用该函数检查是否包函非法字符

 

防止 SQLURL 注入:

sql_inj.java 代码:

5.JSP 页面判断代码:

 

使用 javascript 在客户端进行不安全字符屏蔽

功能介绍:检查是否含有”‘”,”\\”,”/”

参数说明:要检查的字符串

返回值:0:是 1:不是

函数名是

function check(a){




	






	
return 1;




	






	
fibdn = new Array (”‘” ,”\\”,”/”);




	






	
i=fibdn.length;




	






	
j=a.length;




	






	
for (ii=0; iii; ii++)




	






	
{ for (jj=0; jjj; jj++)




	






	
{ temp1=a.charAt(jj);




	






	
temp2=fibdn[ii];




	






	
if (tem’; p1==temp2)




	






	
{ return 0; }




	






	
}




	






	
}




	






	
return 1;




	






	
}

===================================

总的说来,防范一般的 SQL 注入只要在代码规范上下点功夫就可以了。

凡涉及到执行的 SQL 中有变量时,用 JDBC(或者其他数据持久层)提供的如:PreparedStatement 就可以 ,切记不要用拼接字符串的方法就可以了。

转载请注明:汇站网 » 防止 SQL 注入的五种方法

收藏 (0)

微信扫一扫

支付宝扫一扫

点赞 (0)

免责 声明

本资源仅用于个人 学习和研究使用,禁止用于任何商业环境!

 1.  本网站名称:汇站网
 2.  本站永久网址:https://www.huizhanii.com/
 3.  本站所有资源来源于网友投稿和高价 购买,所有资源仅对编程人员及源代码爱好者开放下载做参考和研究及学习,本站不提供任何技术服务 !
 4.  本站所有资源的展示图片和信息不代表本站的立场 !本站只是储蓄平台及搬运
 5.  下载者禁止在服务器和虚拟机下进行搭建运营,本站 所有资源不支持联网运行!只允许调试,参考和研究!!!!
 6.  未经原版权作者许可,禁止用于任何 商业环境,任何人不得擅作它用,下载者不得用于违反国家法律,否则发生的一切法律后果自行承担!
 7.  为尊重作者版权,请在下载24小时 内删除!请购买原版授权作品,支持你喜欢的作者,谢谢!
 8.  若资源侵犯了您的合法权益, 请持 您的版权证书和相关原作品信息来信通知我们请来信     通知我们 我们会及时删除,给您带来的不便,我们深表歉意!
 9.  如下载链接失效、广告或者压缩包 问题请联系站长处理!
 10.  如果你也有好源码或者教程,可以 发布到网站,分享有金币奖励和额外收入!
 11.  本站资源售价只是赞助,收取费用 仅维持本站的日常运营所需!
 12.  因源码具有可复制性,一经赞助 ,不得以任何形式退款。
 13.  更多详情请点击查看

汇站网 Linux 防止SQL注入的五种方法 https://www.huizhanii.com/15051.html

汇站

站长资源下载中心-找源码上汇站

常见问题
  • 如果付款后没有弹出下载页面,多刷新几下,有问题联系客服!
查看详情
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情

相关文章

发表评论
暂无评论
  随机评论   表情   下载本站到电脑桌面


表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
登录后评论
联系官方客服

为您解决烦忧 - 24小时在线 专业服务

(汇站网)一个专注站长资源的平台网站,提供最新的网站模板和整站源码,内容包含各类精品网页模板,企业网站模板,网站模板,DIV+CSS模板,织梦模板,帝国cms模板,discuz模板,wordpress模板,个人博客论坛模板,上千种免费网页模板下载尽在汇站网.找源码上汇站.huizhanii.com