单元测试规约
单元测试
**AIR原则:**可重复性、独立性、自动化
BCDE原则: Border边界值测试、Correct正确的输入,并得到预期的结果、Error证明程序有错、Design与设计文档相结合
单元测试框架
系统安全规约
权限控制
越权访问 BAC(Broken Access Control)
垂直:普通管理员–》超级管理员–》系统管理员
水平:普通用户A–》普通用户B–》用户C–》用户D
防范措施:
- 前后端同时对用户输入信息进行校验
- 验证用户是否有权限调用相关功能
- 验证用户是否具备操作数据的权限
- 直接对象引用的资源ID要加密,防止攻击者枚举ID,敏感数据特殊化处理
- 永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤
敏感数据:服药记录、健康状况、考试分数、姓名,身份证号码、所购商品、信用卡号、工资报酬、银行卡号、订单信息、个人行程、个人照片、家庭成员、客户号。
数据脱敏原则 - 保持原有数据特征
- 保持数据之间的一致性
- 保持业务规则的关联性
- 多次脱敏之间的数据一致性
SQL注入攻击防御
SQL注入: 通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。动态生成Sql语句是没有对用户输入的数据进行验证是主要原因。
SQL注入常用防御手段:
过滤危险字符、使用预编译语句、参数化查询
Mybatis框架SQL注入漏洞场景
- 使用$直接拼接
- 模糊查询like后的参数
- in之后的参数
示例:<foreach collections="list" item="item" separator="," open="(" close=")" index="" > #{item.id}</foreach>
- order by之后
XSS(Cross Site Scripting)跨站点脚本攻击及其防御
XSS跨站脚本攻击发生在客户端。可被用于进行窃取隐私、钓鱼欺骗、偷取密码、传播恶意代码等攻击行为
防御
输入过滤:单、双引号、<、>等
编码转换:HTML实体编码、JavaScript编码
Cookie安全策略:HttpOnly
重放攻击(replay attacks)
攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性
防御
加随机数、加时间戳、加流水号、redis缓存、token验证、Sentinel限流防刷