上海软件测试培训
达内上海市场营销中心

15026646813

热门课程

安全性测试认识及重点分享:SQL注入

  • 时间:2017-11-01 13:45
  • 发布:上海软件测试培训
  • 来源:企业笔试题

安全性测试的定义:安全性测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程 。

安全性测试的目的

1,提升IT产品的安全质量;

2,尽量在发布前找到安全问题予以修补降低成本 ;

3,度量安全。

4,验证安装在系统内的保护机制能否在实际应用中对系统进行保护,使之不被非法入侵,不受各种因素的干扰。

上海软件测试培训机构小编给大家举个例子:

a 机密内容不暴露给不被授权的个人或用户实体

b 用户不能单方面有权限屏蔽掉网站的某一功能

安全性测试分为哪些方面呢?

1, SQL Injection( SQL 注入)

2, Cross-site script(XSS) (跨站点脚本攻击)

3, CSRF (跨站点伪造请求)

4, URL跳转

5, Directory Traversal (目录遍历)

6,Email Header Injection (邮件标头注入)

7,exposed error messages(错误信息)

这里上海达内软件测试培训小编重点要介绍SQL Injection。

SQL Injection应该称为SQL指令植入式攻击,是描述一个利用写入特殊SQL程序码攻击应用程序的动作。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入.

1,判断sql注入存在的情况

通常情况下,SQL注入一般存在于带有参数传递的URL页面

例如:HTTP://xxx.xxx.xxx/abc.asp?id=XX

有时一个动态网页中可能只有一个参数,有时可能有N个参数,有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入。

例如: 搜索页面

登录页面

提交评论页面等等.

2,判断过程:

带有参数传递的URL:

http://aipai.163.com/s/trade/orderDetail/?orderId=183004

提交查询的数据库SQL为:

select * from order where id=183004.

测试SQL注入是否存在方法:

1、附加一个单引号 : ’http://...ail.htm?oid=183004

查询的SQL:select * from orders where id=183004’运行异常

2、附加 “and 1=1”http://...ail.htm?oid=183004and 1=1,

查询的SQL: select * from orders where id=183004and 1=1 运行正常

3、附加“and 1=2” http://...ail.htm?oid=183004and 1=2,

查询的SQL: select * from orders where id=183004and 1=2 运行异常

如果以上三步骤全面满足,那么一定存在SQL注入漏洞。

3,常用的SQL注入语句

根据实际情况,SQL注 入请求可以使用以下语句:

返回的是连接的数据库名 and db_name()>0

作用是获取连接用户名 and user>0

将数据库备份到Web目录下面 ;backup database 数据库名 to disk='c:\inetpub\wwwroot\1.db';--显示SQL系统版本 and 1=(select @@VERSION) 或an1=convert(int,@@version)—

' or 1=1- -

" or 1=1- -

or 1=1- -

' or 'a'='a

" or "a"="a

') or ('a'='a

4, 如何防止SQL注入?

从应用程序的角度来讲,我们要做以下三项工作:

1、转义敏感字符及字符串,SQL的敏感字符包括:

“exec”,”xp_”,”sp_”,”declare”,”Union”,”cmd”,”+”,”//”,”..”,”;”,”‘”,”--”,”%”,”0x”,”><=!-*/()|”,和”空格”).

2、屏蔽出错信息:阻止攻击者知道攻击的结果

3、在服务端正式处理之前提交数据的合法 性(数据类型,数据长度,敏感字符的校验)

从测试人员的角度来讲,在程序开发前(即需求阶段),我们就应该有意识的将安全性检查应用到需求测试中,例如对一个表单需求进行检查时,我们一般检验以下 几项安全性问题:

1、需求中应说明表单中某一FIELD的类型,长度,以及取值范围(主要作用就是禁止输入敏感字符)

2、需求中应说明如果超出表单规定的类型,长度,以及取值范围的,应用程序应给出不包含任何代码或数据库信息的错误提示。 当然在执行测试的过程中,我们也需求对上述两项内容进行测试。

更多关于安全性测试的知识,请关注上海软件测试培训官方网站或者加入我们在线免费试听课程(扫下方二维码)

学习使我们处于不败之地,IT学习更能让我们适应互联网+大数据时代的高速发展,上海达内带你一同走进魔都的高薪阶层,做更有价值的事。【上海软件测试培训班】达内

上一篇:快速测试不单单节约了你两倍的时间
下一篇:利用Docker和Junit进行集成测试

软件测试面试题,不是经典但命中率极高

QA在软件测试中扮演什么角色?如何保障软件质量

软件测试工程师专用工具:Burpsuite测试移动应用程序

春运急?教你用Python自动刷新抢12306火车票

选择城市和中心
贵州省

广西省

海南省