1. 关键字

  • 黑客与脚本小子
  • 安全的本质:安全的本质是信任域的问题。一切安全方案设计基于信任关系。所以可以根据不同的信任域来设计安全方案。
  • 安全三要素(CIA):机密性(Confidentiality),完整性(Integrity),可用性(Avaliability)
  • 攻击手段:SQL注入、XSS(跨站脚本攻击)、DoS(Denial of Service)
  • 攻击类型:浏览器安全、web安全(分客户端和服务端)等

2. 如何实施安全评估

资产等级划分->威胁分析->风险分析->确认解决方案

2.1 资产等级划分

明确保护目标和要保护的内容,划分信任域

2.2 威胁分析

把所有威胁找出来,可以用头脑风暴或者威胁建模。比如微软的STRIDE模型。

2.3 风险分析

Risk = Probability * Damage Potential
这里也有一些风险模型可以选择,比如微软的DREAD模型将风险分成各种等级。

3.安全方案设计原则

3.1 Secure By Default原则

更多的使用白名单,系统会变得更加安全。在Web服务上的例子:
白名单做法:只允许网站服务器的80和443端口对外提供服务。
黑名单做法: 不允许ssh端口对Internet开放。这时候要审计默认的22端口,然而有的工程师可能修改了端口,也就绕过了安全策略。
总结:可见,白名单的限制条件更加完整,不会遗漏一些可能性。

3.2 最小权限原则

这个很好理解,给定足够的最小权限即可。

3.3 纵深防御原则

从不同层面、角度设计多个安全方案,互相协作,形成一个完整的防御体系。另外一层意思就是在正确的时候做正确的事。适当的时机应用安全策略。

3.4 数据与代码分离

防止错把用户数据当代码的情形。用户数据的边界要能够和代码严格区分开

3.5 不可预测性原则

加密、随机数、哈希等众多实现使得攻击者无法对指定信息进行预测,从而防御了攻击。