1. 单元测试规约
1.1 是什么
对软件组成单元进行的测试。目的是检验软件基本组成单位的正确性。测试对象是软件设计的最小单元:模块,又称为模块测试。
1.2 AIR 原则
A:Automatic 自动化
I:Independent 独立性
R:Repeatable 可重复性
1.3 BCDE 原则
B:Border 边界值测试
C:Correct 正确的输入得到正确的结果
D:Design 与设计文档结合
E:Error 证明程序有错
1.4 常用框架
JUnit、Mockito、Spring-Test
2. 系统安全规约实践
2.1 权限控制
(1)越权访问(Broken Access Control,简称BAC)
(2)分为垂直越权访问、水平越权访问
(3)防范措施
前后端双重验证机制
调用功能前验证权限
执行关键操作前验证身份
直接对象引用的资源ID要加密
永远不要相信用户输入,对于可控参数进行检查过滤
2.2 敏感数据处理规约
(1)处理:特殊信息授权、特殊信息脱敏、特殊信息加密存取、特殊信息加密传输
(2)脱敏原则
保持原有数据特征
保持数据之间的一致性
保持业务规则的关联性
多次脱敏之间数据一致性
2.3 SQL 注入攻击及其预防
(1)SQL 注入就是通过把 SQL 命令插入到 Web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意 SQL 命令。
(2)漏洞场景
使用 $ 直接拼接、模糊查询 like 后的参数、in 之后的参数、order by 之后
2.4 XSS 攻击及其预防
(1)XSS 跨站脚本攻击(Cross Site Scripting)发生在客户端,可被用于窃取隐私、钓鱼欺骗、偷取密码、传播恶意代码等
(2)前端防护
输入过滤:单引号、双引号、尖括号等
编码转换:HTML、JavaScript
Cookie 安全策略:HttpOnly
2.5 防重、防刷、违禁风控设计实践
(1)重放攻击防范:时间戳+签名
(2)防刷:Sentinel 限流、熔断