T31-单元测试与系统安全规约学习笔记

179 阅读2分钟

1. 单元测试规约

1.1 认识单元测试

单元测试是对软件组成单元进行的测试,其目的是检验软件基本组成单元的正确性。测试对象是软件设计的最小单元:模块,又称为模块测试

1.2 单元测试的AIR原则

image.png

1.3 单元测试的BCDE原则

  1. B Border 边界值测试
  2. C Correct 正确的输入,并得到预期的结果
  3. E Error 证明程序有错
  4. D Design 与设计文档相结合

1.4 边界值测试

  1. 边界点定义
  2. 边界值分析

1.5 单元测试框架

image.png

2. 系统安全规约实践

2.1 权限控制

越权访问(Broken Access Control)是web应用程序中一种场景的漏洞

  1. 前后端同时对用户输入信息进行校验,双重校验机制
  2. 调用功能前,验证用户是否有权限调用相关功能
  3. 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
  4. 直接对象引用的资源ID加密,防止攻击者枚举ID,敏感数据特殊化处理
  5. 永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤

image.png

2.2 敏感数据处理规约

image.png

image.png

数据脱敏的原则

  1. 保持原有数据特征
  2. 保持数据之间的一致性
  3. 保持业务规则的关联性
  4. 多次脱敏之间的数据一致性

前端展示脱敏

日志记录脱敏

image.png

数据存取加密

image.png

image.png

2.3 SQL注入攻击及其预防

所谓SQL注入,就是通过把SQL命令插入到web表单提交或者输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令,动态生成sql语句时没有对用户输入的数据进行验证是sql注入攻击得逞的主要原因

SQL注入的常用防御手段

  1. 过滤危险字符
  2. 使用预编译语句 JDBC Preparestatement
  3. 参数化查询 Hibernate Mybatis

Mybatis框架SQL注入漏洞场景

  1. 使用$直接拼接
  2. 模糊查询like后的参数
  3. in之后的参数
  4. order by之后

2.4 XSS攻击及其预防

XSS跨站脚本攻击(Cross Site Scripting XSS) 发生在客户端,可被用户进行窃取隐私、钓鱼期票、偷取密码、传播恶意代码等攻击行为

  1. 输入过滤:单引号、双引号、< > 等
  2. 编码转换:HTML实体编码、JavaScript编码
  3. Cookie安全策略:HttpOnly

2.5 防重、防刷、违禁风控设计实践

image.png

image.png