1.Web安全简史
1.1中国黑客简史
对于现代计算机系统来说,在用户态的最高权限是root,也是黑客们最渴望能够获取的系统最高权限。不想拿到“root”的黑客,不是好黑客。
在现实世界中,真正造成破坏的,往往并非那些挖掘并研究漏洞的“黑客们”,而是这些脚本小子。而在今天已经形成产业的计算机犯罪、网络犯罪中,造成主要破坏的,也是这些“脚本小子”。
1.2黑客技术的发展历程
从黑客技术发展的角度看,在早期,黑客攻击的目标以系统软件居多。运营商、防火墙对于网络的封锁,使得暴露在互联网上的非Web服务越来越少,且Web技术的成熟使得Web应用的功能越来越强大,最终成为了互联网的主流。黑客们的目光,也逐渐转移到了Web这块大蛋糕上。
1.3Web安全的兴起
2.黑帽子,白帽子
正如一个硬币有两面一样,“黑客”也有好坏之分。
在黑客的世界中,往往用帽子的颜色来比喻黑客的好坏。
3.返璞归真,揭秘安全的本质
安全问题的本质是信任的问题。
一切的安全方案设计的基础,都是建立在信任关系上的。我们必须相信一些东西,必须有一些最基本的假设,安全方案才能得以建立;如果我们否定一切,安全方案就会如无源之水,无根之木,无法设计,也无法完成。
4.破除迷信,没有银弹
安全是一个持续的过程。
5.安全三要素
6.如何实施安全评估
6.1资产等级划分
对互联网公司所拥有的资产进行等级划分,就是对数据做等级划分。
做资产等级划分的过程,需要与各个业务部门的负责人一一沟通,了解公司最重要的资产是什么,他们最着重的数据是什么。通过访谈的形式,安全部门才能熟悉、了解公司的业务,公司所拥有的数据,以及不同数据的重要程度,为后续的安全评估过程指明方向。
6.2威胁分析
在本书中介绍一种威胁建模的方法,它最早是由微软提出的,叫做STRIDE模型。
威胁
定义
对应的安全属性
Spoofing(伪装)
冒充他人身份
认证
Tampering(篡改)
修改数据或代码
完整性
Repudiation(抵赖)
否认做过的事情
不可抵赖性
InformationDisclosure(信息泄露)
机密信息泄露
机密性
Denial of Service(拒绝服务)
拒绝服务
可用性
Elevation of Privilege(提升权限)
未经授权获得许可
授权
6.3风险分析
如何更科学地衡量风险呢?这里再介绍一个DREAD模型,它也是由微软提出的。
等级
高(3)
中(2)
低(1)
Damage Potential
获取完全验证权限;
执行管理员操作;
非法上传文件
泄露敏感信息
泄露其他信息
Reproducibility
攻击者可以随意再次攻击
攻击者可以重复攻击,但有时间限制
攻击者很难重复攻击过程
Exploitability
初学者在短期内能掌握攻击方法
熟练的攻击者才能完成这次攻击
漏洞利用条件非常苛刻
Affected users
所有用户,默认配置,关键用户
部分用户,非默认配置
极少数用户,匿名用户
Discoverability
漏洞很显眼,攻击条件很容易获得
在私有区域,部分人能看到,需要深入挖掘漏洞
发现该漏洞及其困难
6.4设计安全方案
作为安全工程师,要想的就是如何通过简单而有效的方案,解决遇到的安全问题。安全方案必须能够有效抵抗威胁,但同时不能过多干涉正常的业务流程,在性能上也不能拖后腿。
好的安全方案对用户应该是透明的,尽可能地不要改变用户的使用习惯。
7.白帽子兵法
7.1 Secure By Default原则
按照白名单的思想,应该根据业务需求,列出一个允许使用的软件以及软件版本的清单,在此清单外的软件则禁止使用。如果允许工程师在服务器上随意安全软件的话,则可能会因为安全部门不知道、不熟悉这些软件而导致一些漏洞,从而扩大攻击面。
通配符“*”,代表来自任意域的Flash都能访问本域的数据,因此就造成了安全隐患。
所以在选择使用白名单时,需要注意避免出现类似通配符“*”的问题。
最小权限原则要求系统只授权主体必要的权限,而不要过度授权,这样能有效地减少系统、网络、应用、数据库出错的机会。
7.2 纵深防御原则
纵深防御并不是同一个安全方案要做两边或多遍,而是要从不同的层面、不同的角度对系统做出整体的解决方案。
它要求我们深入理解威胁的本质,从而做出正确的应对措施。
7.3 数据与代码分离原则
在Web安全中,由“注入”引起的问题比比皆是,此类问题均可以根据“数据与代码分离原则”设计出真正安全的解决方案,因为这个原则抓住了漏洞形成的本质原因。
7.4 不可预测性原则
不可预测性能有效地对抗基于篡改、伪造的攻击。
不可预测性的实现往往需要用到加密算法、随机数算法、哈希算法。
版权归原作者 FangWenJing150 所有, 如有侵权,请联系我们删除。