我是一名安全架构师,我习惯于将项目的安全性定义为由他人执行的规范。我最近的任务是教新编码人员如何使用“设计安全”(以及在不久的将来“设计隐私”)的原则进行设计和编程。我有 30-45 分钟(是的,我知道),而且谈话需要与语言无关。这意味着我需要提供可供 Web 开发人员、应用程序开发人员和基础设施开发人员应用的可操作规则。
我提出了 5 条基本规则和一个补充:
- 不信任内部/外部输入(包括卫生、缓冲区溢出等)
- 任何实体、对象或用户的最低权限
- 失败“没有特权”
- 安全,即使设计是已知/公开的
- 记录以便不熟悉系统的人可以审核每个操作
补充:如果您违反规则,请证明缓解措施可以在未来的程序员添加功能后继续存在。
这些规则中的每一个都可以用来自任何语言或应用程序的示例进行扩充,以获得具体指导。我相信这从高层次的角度处理了“设计安全”的大部分一般原则。我错过了什么吗?