《白帽子讲Web安全》学习笔记第一章
白帽子讲Web安全
对于《白帽子讲web安全(第二版)》的学习记录。
一篇简略的笔记,结合了自己的一点理解
web安全
起初,研究计算机系统和网络的人被称之为“Hacker”,在中国按照音译叫作黑客。
对于现代计算机系统来说,用户态的最高权限是root(或Administrator),也是黑客们最渴望获取的系统最高权限。漏洞利用代码能帮黑客达成这一目的,黑客使用的漏洞利用代码,称为“exploit”。有的黑客精通计算机技术,能自己挖掘漏洞并编写exploit,而只能使用别人的代码,没有自己开发和创造的能力的黑客被称为"Script Kid",即“脚本小子”。
安全问题-信任问题-概率问题
安全三要素
机密性,完整性,可用性简称CIA
机密性
要求数据内容不泄露,加密是实现机密性要求的常见手段完整性
则要求数据的内容是完整、没有被篡改的。常见的保证完整性的技术手段是数字签名。可用性
要求保证资源是“随需可得”的。
安全评估
一个安全评估过程可以简单地分为四个阶段:资产等级划分、威胁建模、风险分析、设计安全方案。
资产等级划分
了解公司业务、公司所拥有的数据、以及不同数据的重要程度。威胁建模
把可能造成危害的来源称为威胁,把可能会出现的损失称为风险。
威胁建模就是把所有威胁通过科学的方式找出来。
威胁建模的一种方法:
STRIDE
威胁 | 定义 | 对应的安全属性 |
---|---|---|
伪装 | 冒充他人身份 | 认证 |
篡改 | 修改数据或代码 | 完整性 |
抵赖 | 否认做过的事 | 不可抵赖性 |
信息泄露 | 机密信息泄露 | 机密性 |
拒绝服务 | 拒绝服务 | 可用性 |
提升权限 | 未经授权获得许可 | 授权 |
风险分析
风险由以下因素组成:风险=可能性∗潜在危险风险=可能性∗潜在危险
DREAD模型设计安全法案
一个优秀的安全设计方案应该具备以下特点:能够有效解决问题
用户体验好
高性能
低耦合
易于扩展和升级
安全方案的设计原则
在设计安全方案时,最基本和最重要的原则就是“Secure by Default”(默认安全),原则上可以归纳为黑名单和白名单的思想,如果更多地使用白名单,系统会更安全。
专家系统:黑名单和白名单
黑名单列入不准入,白名单列入准入。最小权限原则
只授予主体必要的权限,而不要过度授权。“纵深防御”原则
纵深防御包含两层含义:首先,要在不同的层面、不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体;其次,要在正确的地方做正确的事,即在解决根本问题的地方实施针对性安全方案。“数据与代码分离”原则
将数据与代码保存在同一物理介质上,由于计算机的运算器很容易混淆代码和数据,容易产生注入漏洞。随机性原则
随机性或不可预测性能有效对抗基于篡改、伪造的攻击。
利用正运算和逆运算之间的时间复杂度差异来抵御攻击。
只有基于量子算法的随机数才是真正意义上的随机数。