标签:
前些日子定的书单,下放给各淘宝卖家,今天来的第一本就是这本,是一个我完全陌生的领域,然而强烈的好奇心,催使我看完了第一章,其实就是个概述。
1.1 Web安全简史
exploit:黑客们使用的漏洞利用代码。
Script Kids:只对攻击本身感兴趣,没有动手能力,对计算机原理和各种编程技术略知一二,因而只能编译别人的代码的黑客,即“脚本小子”。
1. Web安全的兴起
(1)SQL注入
(2)XSS
(3)CSRF
http://blog.csdn.net/dyllove98/article/details/8759910
1.2 黑帽子、白帽子
1. 研究安全的心态对比
(1)黑帽子:只要能够找到系统的一个弱点,就可以达到入侵系统的目的;
(2)白帽子:必须找到系统的所有弱点,不能有遗漏,才能保证系统不会出现问题。
2. 对待问题的角度:
(1)黑帽子:为了完成一次入侵,需要利用各种不同漏洞的组合来达到目的,是在不断地组合问题。
(2)白帽子:在设计解决方案时,在不断地分解问题,再对分解后的问题逐个予以解决。
3. 工程师与安全领域
(1)工程师:No Patch For Stupid.
(2)安全领域:最大的漏洞就是人。
1.3 返璞归真,揭秘安全的本质
安全问题的本质是信任的问题。
1.4 破除迷信,没有银弹
安全是一个持续的过程。
1.5 安全三要素
1. 机密性(Confidentiality):要求保护数据内容不能泄露,常用加密来实现。
2. 完整性(Integrity):要求保护数据内容是完整、没有被篡改的,常用数字签名来实现。
3. 可用性(Availability):要求保护资源是“随需而得”。(常见攻击有DoS)
4. 可审计性
5. 不可抵赖性
1.6 如何实施安全评估
1. 资产等级划分:是所有工作的基础,明确目标。(互联网安全的核心问题,是数据安全的问题。)
2. 威胁(Threat)分析:使用头脑风暴法或威胁建模把所有的威胁找出来。
(1)威胁:可能造成危害的来源。
(2)微软提出的STRIDE模型
威胁 |
定义 |
对应的安全属性 |
伪装(spoofing) |
冒充他人身份 |
认证 |
篡改(tampering) |
修改数据或代码 |
完整性 |
抵赖(repudiation) |
否认做过的事情 |
不可抵赖性 |
信息泄露(informational disclosure) |
机密信息泄露 |
机密性 |
拒绝服务(DoS: denial of service ) |
拒绝服务 |
可用性 |
提升权限(elevation of privilege) |
未经授权获得许可 |
授权 |
(3)进行威胁分析时,要尽可能地不遗漏威胁,头脑风暴的过程可以确定攻击面(attack surface),而且很多时候还需要经常回顾和更新现有的模型。
3. 风险(Risk)分析
(1)风险:可能会出现的损失。
(2)微软提出的DREAD模型
等级 |
高(3) |
中(2) |
低(1) |
Damage potential |
获取完全验证权限;执行管理员操作;非法上传文件 |
泄露敏感信息 |
泄露其他信息 |
Reproducibility |
攻击者可以随意再次攻击 |
攻击者可以重复攻击,但有时间限制 |
攻击者很难重复攻击过程 |
Exploitability |
初学者在短期内能掌握攻击方法 |
熟练的攻击者才能完成这次攻击 |
漏洞利用条件非常苛刻 |
Affected users |
所有用户,默认配置,关键用户 |
部分用户,非默认配置 |
极少数用户,匿名用户 |
Discoverability |
漏洞很显眼,攻击条件很容易获得 |
在私有区域,部分人能看到,需要深入挖掘漏洞 |
发现该漏洞极其困难 |
4. 确认解决方案
没有不安全的业务,只有不安全的实现方式。
一个优秀的安全方案具备以下特点:
(1) 能够有效解决问题
(2) 用户体验好
(3) 高性能
(4) 低耦合
(5) 易于扩展与升级
1.7 白帽子兵法
1. Secure by Default原则(最基本最重要的总则):白名单、黑名单思想
(1)黑名单、白名单
在Web安全中,对白名单思想的运用比比皆是。而且,信任白名单是安全的。但是,如果这个信任基础不存在了,那安全就荡然无存,白名单也就不一定安全了。(选择使用白名单时,需要避免出现类似通配符的问题。)
(2)最小权限原则
2. 纵深防御(Defense by Depth)原则(更全面、更正确地看待问题)
(1)在各个不同层面、不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体。
(2)在正确的地方做正确的事情,在解决根本问题的地方实施针对性的安全方案。
3. 数据与代码分离原则(从漏洞的成因上看问题)
适用于各种由于“注入”而引发安全问题的场景,以及缓冲区溢出。
4. 不可预测性(Unpredictable)原则(从克服攻击方法的角度看问题)
有效对抗基于篡改、伪造的攻击
其实现需要用到加密算法、随机数算法、哈希算法
1.8 总结
安全是一门朴素的学问,也是一种平衡的艺术。
标签:
原文地址:http://www.cnblogs.com/freescale/p/4862375.html