Web安全测试—Web应用的结构

  Web应用的一种分类方法是依据它们所拥有的可访问接口的数量和种类。简单的架构就是将所有的功能封装在一个或两个组件中,复杂的架构会有若干个组件,最复杂的架构是将若干个组件应用捆绑在一起。

  常见组件

  最常见的Web应用都基于模型-视图-控制器(MVC)设计。这种部署型式的目的是将输入和输出功能(“视图”)从“控制器”所集成的对业务需求(“模型”)的操作中分离出来。这样就可以对Web应用进行单独的部署、测试和维护。

  会话层(表示层)

    负责跟踪用户并管理用户的会话。包括装饰、图形和界面逻辑。会话组件中,部分逻辑负责发布、终止和管理报头、Cookie和传输安全(通常是SSL)。可能也会承担表示层的工作,如根据检测到的网页浏览器类型向用户发送不同的可视化效果。

  应用层

    可以作为单独的一层,包含大多数的业务逻辑。负责制定功能和访问控制方面的决策。

  数据层

    独立的数据层,可以明确地将存储数据的工作分配给软件中的独立组件。

  测试的焦点和接口,就是系统中独立存在的层。因为系统中独立存在的层的数量会极大地影响其复杂度。故测试时需要清楚的了解每一层中的测试点,对每个部件进行测试。

  单层Web应用

  单层Web应用时将所有的业务逻辑、数据以及其他资源放在相同的位置。处理HTTP连接本身、会话管理、数据管理和执行业务规则等功能之间是不存在明确的责任分离的。

  单层Web应用时简单的Java服务器页面(JSP)或servlet,它们接受若干参数作为输入,然后选择提供不同的文件供下载。

  如何测试单层Web应用? 必须确定其输入和输出,并执行通常的正面、反面和安全值测试。比如:

  “一个应用,仅用户存储上千份文件,每个文件包含给定邮递区号当天的天气报告。当用户输入邮递区号,应用就显示对应的文件。需要测试逻辑(用户输入xyz作为邮递区号会出现什么情况?),安全测试(用户输入/etc/passwd作为邮递区号会出现什么情况?)等。”

  双层Web应用

  应用需求的增多,第二个组件会分担一些工作,并在独立的进程或系统中完成。最常见的情况是,一个会话/应用组件和一个数据组件。

  描述Web应用的一个常见的缩写词是LAMP,代表Linux、Apache、MySQL和PHP。Apache和PHP协作以提供组合的会话/应用组件,MySQL提供独立的数据组件。

  如何测试双层Web应用?首先必须要考虑能够越过两层之间的分界线的相关测试点。如果表示/应用层向数据层发出SQL查询,那必须考虑能够直接处理数据层的测试。数据层,数据之间的关系以及应用使用数据的方式,应用可能会搅乱数据的方式,错误数据可能搅乱应用的方式,都是我们的测试点。

  层数对测试的影响

  测试应该清楚的了解应用中组件之间的关系,分析组件之间的关系,不光要知道其表面的逻辑关系,还需要了解其隐含的逻辑关系。这样才能确保应用正常运行。

  如果检测或评估测试的方法是否有效?可以通过测试的代码覆盖率、需求覆盖率、用例覆盖率和已知异常场景覆盖率来检测或评估。

  测试人员不光需要了解应用组件之间的关系,还需要具备在发现bug的同时,分析bug的能力,如bug出现的场景逻辑、日志中bug出现在哪一层、产生bug的原因等。

posted @ 2023-06-04 11:32  Alpha_To_Beta  阅读(58)  评论(0)    收藏  举报