51Testing软件测试论坛
标题:
单元测试与系统安全规约
[打印本页]
作者:
lsekfe
时间:
2021-12-23 14:12
标题:
单元测试与系统安全规约
一、单元测试
1.软件测试
指通过手工或者工具对被测对象进行测试操作,以此来验证实际结果和预期之间是否存在差异。
2. 研发与测试周期的W模型
3.单元测试
单元测试是对软件组成单元进行的测试。其目的就是检验软件基本组成单位的正确性。测试对象是软件设计的最小单元-模块。又被称之为模块测试。
单元测试的好处:
- 提高软件质量
- 促进代码优化
- 提升研发效率
项目问题的解决成本随着项目的进展越来越昂贵,单元测试成本 < 集成测试 < 系统测试
4.单元测试的AIR原则
单元测试应该保证如下原则:
·
A(Automatic):自动化。单测是支持自动执行的
·
I(Independent):独立性。单侧不影响项目的实体逻辑
·
R(Repeatable):可重复性。单侧在某种程度上可以复用
5.单侧的BCDE原则
·
B(Border):边界值测试。包含在测试域的测试点叫做内点,处在边界的叫做上点,不在测试域的叫做离点
·
C(Correct):正确的输入,并得到预期的结果
·
D(Design):与设计文档相结合
·
E(Error):证明程序有错
6.常用的单元测试框架
·
Junit: 一个开发源代码的Java测试框架,用于编写和运行可重复的测试。
·
Mockito:一个Mock工具,用于模拟各种对象和组件,模拟函数返回值,模拟void类型的异常。
·
Spring-test:集成各种测试框架的组合框架。
·
Hamcrest:一个测试框架,提供了一整套通用的匹配符Matcher。
·
JSONassert:一个专门用户json断言的工具
二、 系统安全规约
1.权限控制
· 越权访问漏洞
越权访问(Broken Access Controller,简称BAC)是web应用程序中常见的一种漏洞,存在范围光,危害大,被OWASP列为web应用十大安全隐患的第二名。
越权访问氛围垂直的不同权限访问,也分为水平的相同权限的不同人员之间的访问。
水平越权访问:是一种基于数据的访问权限控制设计缺陷引起的漏洞,由于服务器端在接收到请求数据进行操作时,没有判断数据的所属人/所属部门从而导致的越权数据访问漏洞。
越权访问的防范措施:
前后端同事对用户输入的信息进行校验,双重校验机制
调用功能前,验证用户是否有权限调用相关功能
执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
直接对象引用的资源ID要加密,防止功能者枚举ID,敏感数据特殊化处理
永远不要相信来自用户的输入,对于可控的参数进行严格的检查与过滤
2.敏感数据的处理
·
敏感数据要遵循如下处理:
1) 特殊信息需要授权才能访问
2) 特殊信息脱敏,脱敏的重要原则为
- 保持原有数据特征
- 保持数据之间的一致性
- 保持业务规则的关联性
- 多次脱敏之间的数据一致性
3) 特殊信息加密存取:通过编写拦截器来实现特殊信息的加密操作。
4) 特殊信息加密传输:通过编写拦截器来实现特殊信息的加密传输操作。
3
.
SQL注入
攻击
通过把SQL命令插入到Web表单递交或者输入域名或页面请求的查询字符串,最终达到七篇服务器执行恶意的SQL命令。
动态生成sql语句时没有对用户输入的数据进行校验是Sql注入攻击得逞的主要原因。
Mybatis框架SQL注入漏洞的场景:
·
使用$符直接拼接
·
模糊查询like后的参数
·
in之后的参数
·
order by之后
常用防御手段:
·
过滤危险字符
·
使用预编译语句JDBC PrepareStatement
·
参数化查询:Hibernate、Mybatis
4.XSS跨站点脚本攻击及其防御
XSS跨站脚本攻击(Cross Site Scripting)主要发生在客户端,可被用于窃取隐私,钓鱼欺骗,偷取密码。传播恶意代码等攻击行为
防御规则:
·
输入过滤:单引号、双引号、<、>等
·
编码转换:HTML实体编码,JavaScripe编码
·
Cookie安全策略,HttpOnly
·
后端可以通过配置XSS过滤器针对于所有的入参进行转换
5.防御重放攻击
接口未作任务校验,导致接口持续被刷,从而导致遭受损失。
解决:
·
接口添加时间戳校验,超过有效时间的请求即视为异常请求,不予处理。
·
接入Sentinel实现限流、熔断,流量监控,从而达到限流的目的。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2