工作

安全代码的检查清单

 

安全代码的检查清单

安全管理

有没有安全更新的策略和落实计划?

有没有安全漏洞的保密共识和规范?

有没有安全缺陷的评估和管理办法?

软件是不是使用最新的安全修复版?

有没有定义、归类和保护敏感信息?

有没有部署多层次的安全防御体系?

安全防御能不能运转良好、及时反应?

不同的安全防御机制能不能独立运转?

系统管理、运营人员的授权是否恰当?

有没有风险管理的预案和长短期措施?

代码评审

数值运算会不会溢出?

有没有检查数值的合理范围

类、接口的设计,能不能不使用可变量?

一个类支持的是深拷贝还是浅拷贝?

一个接口的实现,有没有拷贝可变的传入参数?

一个接口的实现,可变的返回值有没有竞态危害?

接口的使用有没有严格遵守接口规范?

哪些信息是敏感信息?

谁有权限获取相应的敏感信息?

有没有定义敏感信息的授权方案?

授予的权限还能不能更少?

特权代码能不能更短小、更简单?

异常信息里有没有敏感信息?

应用日志里有没有敏感信息?

对象序列化有没有排除敏感信息?

高度敏感信息的存储有没有特殊处理?

敏感信息的使用有没有及时清零?

一个类,有没有真实的可扩展需求,能不能使用 final 修饰符?

一个变量,能不能对象构造时就完成赋值,能不能使用 final 修饰符?

一个方法,子类有没有重写的必要性,能不能使用 final 修饰符?

一个集合形式的变量,是不是可以使用不可修改的集合?

一个方法的返回值,能不能使用不可修改的变量?

类、方法、变量能不能使用 private 修饰符?

类库有没有使用模块化技术?

模块设计能不能分割内部实现和外部接口?

有没有定义清楚内部数据、外部数据的边界?

外部数据,有没有尽早地完成校验?

有没有标示清楚外部数据的校验点?

能不能跟踪未校验外部数据的传送路径?

有没有遗漏的未校验外部数据?

公开接口的输入,有没有考虑数据的有效性?

公开接口的可变化输出,接口内部行为有没有影响?

有没有完成无法识别来源的数据的校验?

能不能不使用序列化技术?

序列化的使用场景,有没有足够的安全保障?

软件还存在什么样风险?

有没有记录潜在的风险问题?

有没有消除潜在风险的长期预案?

有没有消除潜在风险的短期措施?

潜在的风险问题如果出现,能不能快速地诊断、定位、修复?

——来自《极客时间-代码精进之路》学习笔记

发表评论

电子邮件地址不会被公开。 必填项已用*标注