SQL注入的测试方法

简介

Web应用程序的数据存储与读取通过数据库完成,而这些读写的操作通过SQL语句实现。实际项目中可能因为开发人员的疏忽或经验问题,未对用户可输入的参数进行严格地校验,导致用户可能恶意地将SQL命令带入数据库执行,实现注入的目的。

SQL注入的条件

  • 参数中含有SQL语句,并可以带入数据库正常执行
  • Web应用程序和数据库的交互中,必须有参数加入请求传递至数据库

SQL注入的方法

1. 搜索型参数

判断是否存在SQL注入漏洞,需满足以下四步:

http://127.0.0.1/sql.php?Parameter=James    #正常查询数据
http://127.0.0.1/sql.php?Parameter=James'   #页面异常或查询数据为空
http://127.0.0.1/sql.php?Parameter=James%'and'%'='  #正常查询数据
http://127.0.0.1/sql.php?Parameter=James%'and'a%'='b    #查询数据为空或提示列表为空
2.数字型参数

判断是否存在SQL注入漏洞,需满足一下四步:

http://127.0.0.1/sql.php?Parameter=10001    #正常查询数据
http://127.0.0.1/sql.php?Parameter=10001'   #页面异常或查询数据为空
http://127.0.0.1/sql.php?Parameter=10001 and 1=1    #正常查询数据
http://127.0.0.1/sql.php?Parameter=10001 and 1=2    #查询数据为空或提示列表为空
3.字符型参数

判断是否存在SQL注入漏洞,需满足一下四步:

http://127.0.0.1/sql.php?Parameter=James    #正常查询数据
http://127.0.0.1/sql.php?Parameter=James'   #页面异常或查询数据为空
http://127.0.0.1/sql.php?Parameter=James' and '1'='1    #正常查询数据
http://127.0.0.1/sql.php?Parameter=James' and '1'='2    #查询数据为空或提示列表为空

后续

此外,一些注入的方法是通过Java+JDBC代码注入(Statement接口改为PreparedStatement接口预防)、MyBatis框架注入(Mapper XML文件’$”拼接改为’#”拼接预防)等实现,因此对于一些对外的Web程序,SQL注入的检查是必须的,否则通过SQL注入的漏洞,外部用户可能获取/修改数据或直接获得管理员权限,这对生产环境来说都是致命的。

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值