1. 单元测试规约
1.1 认识单元测试
单元测试是对软件组成单元进行的测试,其目的是检验软件基本组成单元的正确性。测试对象是软件设计的最小单元:模块,又称为模块测试
1.2 单元测试的AIR原则
1.3 单元测试的BCDE原则
- B Border 边界值测试
- C Correct 正确的输入,并得到预期的结果
- E Error 证明程序有错
- D Design 与设计文档相结合
1.4 边界值测试
- 边界点定义
- 边界值分析
1.5 单元测试框架
2. 系统安全规约实践
2.1 权限控制
越权访问(Broken Access Control)是web应用程序中一种场景的漏洞
- 前后端同时对用户输入信息进行校验,双重校验机制
- 调用功能前,验证用户是否有权限调用相关功能
- 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
- 直接对象引用的资源ID加密,防止攻击者枚举ID,敏感数据特殊化处理
- 永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤
2.2 敏感数据处理规约
数据脱敏的原则
- 保持原有数据特征
- 保持数据之间的一致性
- 保持业务规则的关联性
- 多次脱敏之间的数据一致性
前端展示脱敏
日志记录脱敏
数据存取加密
2.3 SQL注入攻击及其预防
所谓SQL注入,就是通过把SQL命令插入到web表单提交或者输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令,动态生成sql语句时没有对用户输入的数据进行验证是sql注入攻击得逞的主要原因
SQL注入的常用防御手段
- 过滤危险字符
- 使用预编译语句 JDBC Preparestatement
- 参数化查询 Hibernate Mybatis
Mybatis框架SQL注入漏洞场景
- 使用$直接拼接
- 模糊查询like后的参数
- in之后的参数
- order by之后
2.4 XSS攻击及其预防
XSS跨站脚本攻击(Cross Site Scripting XSS) 发生在客户端,可被用户进行窃取隐私、钓鱼期票、偷取密码、传播恶意代码等攻击行为
- 输入过滤:单引号、双引号、< > 等
- 编码转换:HTML实体编码、JavaScript编码
- Cookie安全策略:HttpOnly