介绍 随着越来越多的重要数据都存储在web应用上,以及网络事务数量的增长,适当的基于网络应用程序的安全性测试也变得相当重要。安全性测试是指机密的数据确保其机密性(例如,不是将其暴露给不恰当的不被授权的个人或用户实体)以及用户只能在其被授权的范围进行操作(例如,一个用户不应该能够单方面有权限屏蔽掉网站的某一功能,一个用户不应该能够在某种无心的状态下改变网络应用程序的功能)的这样一个过程。
一些在安全性测试中运用到的重要的术语 在我们说的更深入之前,了解一些网络应用程序的安全性测试中使用频繁的术语会很有帮助:
1、什么是“易受攻击性”? 这是网络应用程序的一个软肋。造成这个”软肋”的原因,可能是程序中的bug,一种注入(SQL/脚本代码)或者已存在的病毒。
2、什么是“URL处理”? 一些网络应用程序通过URL在客户端(浏览器)和服务器端之间进行额外信息的传递。有时在URL中改变信息可能会导致服务器不可预期的结果。
3、什么是“SQL注入”? 是指通过网络应用的用户接口插入SQL指令到服务器所执行的查询中去的过程。
4、什么是“XSS(跨站式脚本攻击)”? 当一个用户通过Web应用接口插入HTML代码,而这种嵌入其中的代码对于其他用户是可见的,被称做XSS。
5、什么是“欺骗”? 完全仿造网站或电子邮件的赝品被称为欺骗。
安全性测试方法:为了对Web应用提供一次有效的安全性测试,安全测试人员应当对HTTP协议有很好的认知。对于客户端(浏览器)和服务器端之间如何运用HTTP通信有很好的了解是非常重要的。除此之外,测试人员需了解最基本的SQL注入以及跨站式脚本攻击。如果运气好的话,在Web应用上发现的安全漏洞的数目不会很多。不管怎样,能够对所发现的问题精确具体地描述安全漏洞能提供相当大的帮助。
1. 密码破解:Web应用上的安全测试可由“密码破解”开始。为了登录应用程序的非公开领域,可以通过猜测用户名/密码或者利用一些密码破解工具来达到相同的目的。常用用户名和密码列表与开源密码破解工具一样有可用价值。如果一个web应用不强制要求复杂的密码(例如,包含字母,数字和特殊字符,包含最小字符长度要求),那么这个用户名和密码不用花费很长的时间就可以被破解。 如果用户名和密码被不加密的储存在Cookie文件中,入侵者可以通过不同的方法盗用Cookie文件里面的信息,比如用户名和密码。
2. HTTP GET方法上的URL操作 测试人员应当检查应用程序是否通过查询字符串传递重要信息,这应当发生在应用程序通过HTTP GET方法在客户端和服务器之间传递信息的时候。信息是通过查询字符串的参数传递的。测试人员可以修改查询字符串的参数值来检查服务器是否接受了传递过来的信息。 通过HTTP GET请求的用户信息传递给服务器进行身份验证或数据提取。攻击者可以操作每一个通过GET请求传递过来的输入变量,以获得所需的信息或进行数据破坏。在这种情况下,任何由应用程序或web服务器产生的不寻常的行为都是攻击者进入应用的大门。
3. SQL注入: 第二件应该在SQL注入中检查的是,在应用程序的任何一个文本框输入一个单引号应当是非法的。反之,如果测试人员遇到一个数据库错误,表示用户输入插入了一些查询并被应用程序所执行。这样的话,该应用容易受到SQL注入的攻击。 SQL注入攻击是非常危险的,因为攻击者可以从服务器数据库获取一些重要的信息。检查你在Web应用上的SQL注入点,找出你代码库中那些能够直接在数据库上接收用户输入而执行的MySQL查询的代码。 如果用户输入数据被用作查询数据库,攻击者可以注入SQL语句或者伪装SQL语句为用户输入从数据库提取重要信息。即使攻击者成功的摧毁了应用,在浏览器上显示了 SQL查询错误,他们仍可以获取他们所找寻的信息。鉴于这种情况,用户输入的特殊字符应当被适当的处理或者避免。
4. 跨站式脚本攻击(XSS): 测试人员应当额外的检查对Web应用的跨站式脚本攻击。任何HTML,比如<HTML>或者任何脚本,比如<SCRIPT>,应用程序都不应当接受。不然,该应用很容易受到跨站式脚本的攻击。 攻击者可以利用此方法在被攻击者的浏览器上执行恶意代码或者URL。经此跨站式脚本攻击,攻击者能够利用像JavaScript之类的脚本来盗取用户Cookie以及存储在Cookie中的信息。 很多Web应用从不同页面的一些变量里传递或提取用户信息。
比如:http://www.examplesite.com/index.php?userid=123&query=xyz 攻击者可以轻松的传递一些恶意输入或者如同查询参数的<脚本代码>,把重要的用户/服务器数据公布在浏览器上。
重要提示:在安全性测试过程中,测试人员应当特别注意不要去修改如下的任何一条:应用程序或服务器的任何配置信息 服务器端处于执行状态的服务 由应用程序管理的现有的用户或用户数据除此之外,应避免在生产环境上做安全性测试。安全性测试的目的是发现Web应用的易受攻击性,这样开发人员能及时地移除这些缺点,从而保护Web应用和数据在非授权范围的安全性。
觉得不错,可以“一键三连”,或者转发、留言
公众号:程序员二黑,专注软件测试资源分享,
主要分享测试基础、接口测试、性能测试、自动化测试、TestOps架构、Jmeter、LoadRunner、Fiddler、MySql、Linux、简历优化、面试技巧以及大型测试项目实战视频资料
感兴趣的可以关注一下
精彩的内容要和朋友分享哦