安全测试之SQL注入攻击
一、SQL注入攻击的概念
首先说一下,攻击者之所以可以利用自己输入的数据来达到攻击网站的目的,原因就在于SQL语言作为一种解释型语言,它的数据其实是由程序员编写的代码和用户提交的数据共同组成的。正是这个原因,攻击者可以构造对自己有利的数据,利用网站的一些SQL漏洞来达到恶意的目的。
SQL注入,就是指攻击者将恶意的字符串或者语句等信息作为参数输入,服务器在验证这个字段的时候,读取攻击者输入的数据,将其作为正常的值参与SQL语句的查询,试想,如果攻击者输入了一个字符串,在SQL语句执行之后,可以导致删除表等操作,对于一个应用来说,影响是很大的。
二、SQL注入攻击的一个简单实例
某网站的登录功能,用户登录页面需要填写用户名和密码,假设如果其中一个用户名和密码是admin和123456,当用户输入在相应的表单中输入正确的用户名和密码之后,此应用的相应函数执行一定的验证(验证用户名和密码是否匹配),服务器执行SQL语句(表名是user):select * from user where username=’username’ and pwd=’password’,逻辑是如果这个查询语句返回结果不为0,则认为是验证通过,即可以登录成功的用户。
如果某用户输入admin和123456,即执行语句:select * from user where username=’admin’ and pwd=’123456’,执行结果不为0,所以用户登录成功。
如果一个用户输入test’ or 1=’1和111111,即执行语句:select * from user where username=’test’ or 1=’1’ and pwd=’111111’,因为此查询语句中1=’1’的结果为1,or 1=’1’使查询条件始终返回1,因此此语句的查询结果不为0,这样,此用户没有使用正确的用户名和密码也可以登录成功,这就是SQL注入的一个简单实例。
三、SQL注入的后果
SQL注入攻击的危害性还是比较严重的,对于一个有经验的SQL注入攻击者,如果网站存在SQL注入的漏洞,攻击者利用一些恶意的字符串可以进行一些表格的查询甚至更改和删除,也就是说,这个安全漏洞会把数据表及其结构显示在攻击者的面前,攻击者甚至可以利用一些手段来进行其他更严重的攻击等。
四、SQL注入一般会出现在哪些地方?
1、含有输入数据表单的页面(登录界面、查询界面、反馈界面等),即使是hidden的表单也有可能存在这个问题。
2、含有用户信息、ID等的URL(类似于http://XXX/index.asp?ID=155),可以操作ID后的参数数据。
五、SQL注入的防范措施
1、从开发者的角度来说,防范措施如下:
(1) 转义敏感字符及字符串
SQL的敏感字符包括:
“exec”, “xp_”, “sp_”, “declare”, “cmd”, “Union”, “+”, “//”, ”..”, “;”, “’”, “–”, “%”, “0x”, “><=!-*/()|” ,和空格。
(2) 屏蔽出错信息:阻止攻击者知道攻击的结果
(3) 在服务端正式处理之前提交数据的合法性(合法性检查主要包括三 项:数据类型,数据长度,敏感字符的校验)进行检查等。最根本的解决手段,在确认客 户端的输入合法之前,服务端拒绝进行关键性的处理操作.
2、从测试人员的角度来说,防范措施是:
在程序开发前(即需求阶段),我们就应该有意识的将安全性检查应用到需求测试中,例如对一个表单需求进行检查时,我们一般检验以下几项安全性问题:需求中应说明表单中某一field的类型,长度,以及取值范围(主要作用就是禁止输入敏感字符);需求中应说明如果超出表单规定的类型,长度,以及取值范围的,应用程序应给出不包含任何代码或数据库信息的错误提示等。
Note:上述实例只是最简单的一种类型,便于理解,稍微复杂的实例请参考:
1. http://www.jb51.net/hack/200734.html
2. http://www.jb51.net/hack/41493.html
安全测试之SQL注入攻击相关推荐
- 渗透测试之SQL注入基础
渗透测试之SQL注入基础 SQL注入类型 按照数据类型类型来分类 按照执行效果来分类(页面回显效果) 按照数据提交的方式来分类 判断注入类型的方法 MySQL注入基础 联合查询注入 布尔注入 时间盲注 ...
- 软件安全测试之SQL注入
安全测试之SQL注入 1.安全测试在项目整体流程中所处的位置 一般建议在集成测试前根据产品实现架构及安全需求,完成安全性测试需求分析和测试设计,准备好安全测试用例.在集成版本正式转测试后,即可进行安全 ...
- PHP的SQL注入攻击的技术实现以及预防措施
最近在折腾 PHP + MYSQL 的编程.了解了一些 PHP SQL 注入攻击的知识,总结一下经验.在我看来,引发 SQL 注入攻击的主要原因,是因为以下两点原因: 1. php 配置文件 php. ...
- SQL Server安全-加密术和SQL注入攻击
SQL Server上的加密术 SQL Server上内置了加密术用来保护各种类型的敏感数据.在很多时候,这个加密术对于你来说是完全透明的:当数据被存储时候被加密,它们被使用的时候就会自动加密.在其他 ...
- ADO.NET笔记——带参数的查询防止SQL注入攻击
相关知识: 把单引号替换成两个单引号,虽然能起到一定的防止SQL注入攻击的作用,但是更为有效的办法是把要拼接的内容做成"参数" SQLCommand支持带参数的查询,也就是说,可以 ...
- 防止sql注入攻击的方法总结
SQL注入是一种利用未过滤/未审核用户输入的攻击方法("缓存溢出"和这个不同),意思就是让应用运行本不应该运行的SQL代码.通过把SQL命令插入到Web表单递交或输入域名或页面请求 ...
- 第三百九十二节,Django+Xadmin打造上线标准的在线教育平台—sql注入攻击,xss攻击,csrf攻击...
第三百九十二节,Django+Xadmin打造上线标准的在线教育平台-sql注入攻击,xss攻击,csrf攻击 sql注入攻击 也就是黑客通过表单提交的地方,在表单里输入了sql语句,就是通过SQL语 ...
- ASP.NET 4学习笔记(1) SQL注入攻击及解决方案.
一, 定义:所谓SQL注入攻击是应用程序开发人员未预期地把SQL代码传入到应用程序的过程,只有那些直接使用用户提供的值构造SQL语句的应用程序才会受影响. 例如原SQL代码为: select Orde ...
- jdbc之防sql注入攻击
1.SQL注入攻击: 由于dao中执行的SQL语句是拼接出来的,其中有一部分内容是由用户从客户端传入,所以当用户传入的数据中包含sql关键字时,就有可能通过这些关键字改变sql语句的语义,从而 ...
最新文章
- PL/SQL Developer远程访问Oracle数据库
- doxygen 注释规范_编程规范 - doxygen注释规范示例(C++)
- Geoffrey Hinton 等6位图灵奖得主和100多位专家邀请您共话人工智能下一个十年
- C#面向对象设计模式纵横谈
- 眺望全真互联时代!TVP音视频技术闭门会闪耀上海
- java安装和环境配置
- 安装Zorin os
- docker学习-狂神视频
- QT Creator 5.1.2中英文切换
- Tidabie Tidal Music 潮汐音乐下载转换器
- 应用程序正常初始化(0xc0000034)失败
- vue中runtimecompiler和runtimeonly的区别
- centos 上搭建FC SAN
- Kali忘记root密码强制更改办法
- Visionpro Display 添加框线
- Memcache教程
- 亚马逊测评自养号环境系统的介绍和用法
- Bootstrap3的栅格化布局样式
- linux nas解决方案_Linux操作系统在NAS中的典型应用
- 计算机教师的人生格言,教师人生格言座右铭(精选70句)
热门文章
- MOCO: Momentum Contrast for Unsupervised Visual Representation Learning
- Tuxera NTFS2022Mac如何安装以及怎么激活NTFS?
- “终端有鸿蒙,云端有安超!” 鸿蒙落地,安超有什么新动作?
- 《数字集成电路物理设计——陈春章》学习笔记
- 杭电多校第一场第三题 Backpack(异或dp+bitset)
- [springboot]springboot启动流程
- Go的研习笔记-day13(以Java的视角学习Go)
- (PDC2008)Anders Hejlsberg: The Future of C#
- 《战争通论》详细分析世界十大兵书…
- 扬子晚报:杨百万 PK 巴菲特