第一篇 世界观安全
第1章 我的安全世界观
“Hacker“ :黑客
“exploit” :黑客们使用的漏洞利用代码
“Script kids”:脚本小子 ,只懂得编译别人的代码,自己没有动手能力
ACL:访问控制列表
XSS:跨站脚本攻击
安全问题的本质是信任问题,安全是一个持续的过程
安全三要素:机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)。
机密性要求保护数据内容不能泄露,加密是实现机密性要求的常见手段。
完整性则要求保护数据内容是完整、没有被篡改的。常见的保证一致性的技术手段是数字签名。
可用性要求保护数据资源是“随需而得”。
安全评估的过程(4个阶段):资产等级划分->威胁分析->风险分析->确认解决方案。
- 资产等级划分就是对数据做等级划分。互联网安全的核心问题,是数据安全的问题。
威胁(Threat)是可能造成危害的来源;风险(Risk)是可能会出现的损失。
- 威胁分析就是找出所有的威胁,使用威胁建模去协助找出威胁。
威胁建模方法:STRIDE模型(6个单词首字母缩写)
威胁 |
定义 |
对应的安全属性 |
Spoofing(伪装) |
冒充他人身份 |
认证 |
Tampering(篡改) |
修改数据或代码 |
完整性 |
Repudiation(抵赖) |
否认做过的事情 |
不可抵赖性 |
InformationDisclosure(信息泄露) |
机密信息泄露 |
机密性 |
Denial of Service (拒绝服务) |
拒绝服务 |
可用性 |
Elevation of Privilege (提升权限) |
未经授权获得许可 |
授权 |
- 风险分析:DREAD模型(5个单词首字母缩写)
等级 |
高(3) |
中(2) |
低(3) |
Damage Potential |
获得完全验证权限;执行管理员操作;非法上传文件 |
泄露敏感信息 |
泄露其他信息 |
Reproducibility |
攻击者可以随意再次攻击 |
攻击者可以重复攻击,但有时间限制 |
攻击者很难重复攻击过程 |
Exploitability |
初学者在短期内能掌握攻击方法 |
熟练的攻击者才能完成这次攻击 |
漏洞利用条件非常苛刻 |
Affected Users |
所有用户,默认配置,关键用户 |
部分用户,非默认配置 |
极少数用户,匿名用户 |
Discoverablity |
漏洞很显眼,攻击条件很容易获得 |
在私有区域,部分人能看到,需要深入挖掘漏洞 |
发现该漏洞极其困难 |
Risk = Probability * Damage Potential
- 一个优秀的安全方案应该具备以下特点:
能够有效解决问题;
用户体验好;
高性能;
低耦合;
易于扩展和升级。
白帽子兵法:Secure By Default原则、纵深防御原则(Defense in Depth)、数据与代码分离原则、不可预测性原则。
Secure By Default原则:是总则,①黑名单、白名单:黑名单是禁止的名单,白名单是只允许的名单;②最小权限原则:只授予主体必要的权限,不要过度授权。
纵深防御原则(Defense in Depth):更全面更正确的看问题,含义包括①要在不同层面、不同方面实施安全方案,避免出现遗漏,不同方案之间相互配合,构成一个整体;②要在正确的地方做正确的事情。
数据与代码分离原则:从漏洞成因上看问题,广泛适用于由于“注入”而引发安全问题的场景。
不可预测性原则:从克服攻击的角度看问题。
安全是一门朴素的学问,也是一种平衡的艺术。