发布新日志

  • Web安全测试入门(1)

    2014-05-20 15:35:04

    Web的世界发展越来越迅速,很多产品都在叫嚣着移动互联网。随着各种敏捷技术的应用,功能测试已经不是web测试的主体了,越来越的测试人员开始更多的关注web安全测试。

    那到底什么是安全测试呢,这里有个大致的描述:当产品面临恶意/有意破坏规则的输入时,是否能够提供健全的服务。

    猛一下,感觉像是反向测试,对不对。实际上,正向测试和反向测试关注的是功能的完整性。而安全测试更多的是破坏逻辑,(Spock:逻辑!)。它测试的那些破坏正常使用逻辑的场景,而不是那些你现在已经能预知的错误输入的反馈。

    所以功能测试是为了验证我们的产品是否完成了预期目标,而安全测试关注的是软件的”风险“。

    功能测试是有终点的,而安全测试是无止境的,永远没有“安全”的产品,但是有“完整交付”的产品。

    例如:对于最大不超过Max Int的正整数输入,产品返回有效的二进制数字。

    所以,我们在做功能性测试时需要关注:
    1. 正常值的输入,例如:5
    2. 边界值的输入,例如:-1,0,Max Int
    3. 异常处理,例如:-5,5.5和ABC

    而安全测试会关注:
    1. 一些特殊的数字会引起多次递归,例如:23232323
    2. 特殊编码集,例如全角23456

    下面讲述一些你需要了解的基本知识

    1. 什么样的web应用才需要安全测试?
    那些根据不同的请求返回不同的结果的应用

    2. SSL和HPPTS很重要吗?
    不重要,安全测试只关心末端的应用行为,不关心客户端和服务端如何建立连接

    3. 基础概念
    1)服务器:监听HTTP请求的应用
    2)客户端:发起HTTP请求的应用
    3)请求:客户端向服务器端发送的要求提供服务的内容,包含:URL,参数,头信息等
    4)URL:统一资源定位符,来定位服务器应用。是URI的一种子类型。
    5)参数:附带的变量,是由“=”连接的“键=值”数据对。多个参数用&分割。
    6)方法:请求附带的方法,常见的有POST和GET。
    7)构件:组成Web应用的服务组件
    8)组件:构成服务组件的功能。一般都是基于“模型-视图-控制器”实现的。

    4. HTTP请求是没有状态的,也就是说任何请求都是独立的。

    5. HTTP请求是明文的,也就是说很容易被伪造

    6. 安全测试依赖自动化工具,而且只针对软件本身




Open Toolbar