文章目录
1、 Web安全简史
Hacker:即黑客,在计算机安全领域,黑客是一群破坏规则、不喜欢被约束的人,总想着能够找到系统的漏洞,以获得一些规则以外的权力。
exploit:能够帮助黑客拿到“root”权限的漏洞利用代码。
Script Kids:即脚本小子,只对攻击本身感兴趣,对计算机原理和各种编程能力了解粗浅,只懂得编译别人的代码的黑客。
1.1 中国黑客简史
- 启蒙时代(20世纪90年代–21世纪初):这个时期的中国黑客与西方国家同期诞生的黑客精神一脉相承,他们崇尚分享、自由、免费的互联网精神,热衷分享自己的最新研究成果,
- 黄金时代(21世纪初-2010年左右):中美黑客大战为标志,这一时期的黑客逐渐开始贩卖漏洞、恶意软件,开始出现以赢利为目的的攻击行为。
- 黑暗时代(2010年左右-至今):黑客的功利性越来越强,黑色产业链开始成熟,此时期的黑客群体一位内互相之间缺失信任已经不再具有曾经free、open、share的黑客精神了。
1.2 黑客技术的发展历程
早期互联网中,web并非互联网的主流应用,相对来说,基于SMTP、POP3、FTP等协议的服务拥有着绝大多数的用户。因此,这一阶段的黑客主要攻击网络、操作系统以及软件等。2003年的冲击波蠕虫是一个里程碑式的事件,此次事件使得网络运运营商加大了对网络的封锁,使得暴露在互联网上的非web服务越来越少,且wen技术的成熟使得web应用的功能越来越强大,最终成为互联网的主流。
1.3 web安全的兴起
- web1.0时代:人们更加关注服务器端动态脚本的安全问题,比如将一个可执行脚本(俗称webshell)上传到服务器上,从而获取权限。
- web2.0时代:XSS、CSRF等攻击变得更为强大、web攻击的思路也从服务端转向了客户端,转向了浏览器和用户。
❗️❗️❗️SQL注入、XSS是web安全史上的两个里程碑。
2、黑帽子、白帽子
🌚黑帽子,指利用黑客技术造成破坏,甚至进行网络犯罪的群体;
🌝白帽子,指精通安全技术,工作在反黑客领域的专家。
二者在工作时的心态完全不同🙀🙀🙀:
- 对黑帽子而言,只要找到系统的一个弱点,就可以达到入侵系统的目的;
- 对白帽子而言,必须找到系统的所有弱点,不能有遗漏,这样才能保证系统不会出问题。
3、安全的本质
安全的本质是信任问题!
一切安全方案的设计基础,都是建立在信任关系上的。我们必须相信一些东西,必须有一些最基本的假设,安全方案才能得以建立;如果我们否定一切,安全方案就会如无源之水、无本之木,无法完成。
数据从高等级的信任域流向低等级的信任域,是不需要经过安全检查的;数据从低等级的信任域流向高等级的信任域,则需要经过信任边界的安全检查。
4、安全三要素
- 机密性:要求保护数据内容不能泄露,加密是实现机密性要求的常见手段。
- 完整性:要求保护数据内容是完整的、没有被篡改的。常见的保证完整性的技术手段是数字签名。
- 可用性:要求保护资源是“随需而得”。拒绝服务攻击破坏的是安全的可用性。
5、如何实施安全评估
一个安全评估过程,可分为4个阶段:
- 资产等价划分
- 威胁分析
- 风险分析
- 确认解决方案
5.1 资产等级划分
资产等等级划分是所有工作的基础,这项工作可以帮助我们明确目标是什么,要保护什么。在互联网已经完善的今天,互联网的核心其实是由用户数据驱动的——用户产生业务,业务产生数据。故:
互联网安全得核心问题是数据安全问题。
对互联网公司拥有的资产进行等级划分,就是对数据做等级划分。在完成资产等级划分后,对要保护的目标有了一个大概的了解,接下来就需要划分信任域和信任边界。例如,假如最重要的数据放在数据库里,那么把数据库的服务器圈起来;Web应用可以从数据库在读/写数据,并对外提供服务,再把Web服务器圈起来;最外面就是不可信任的Internet。
5.2 威胁分析
在安全领域,把可能造成危害的来源称为威胁(Threat)😨,把可能会出现的损失称为风险(Risk)😨。
什么是威胁分析?威胁分析就是把所有的威胁找出来。这里介绍微软提出的STRIDE模型。
在进行威胁分析时,要尽可能地不遗漏威胁,头脑风暴地过程可以确定攻击面(Attack Surface)。
5.3 风险分析
这里主要介绍微软提出的DREAD模型:
5.4 设计安全方案
安全评估的产物,就是安全解决方案。解决方案一定要有针对性,这种针对性是由资产等级划分、威胁分析、风险分析等阶段的结果给出的。
从产品的角度来看,安全是产品的一种属性,一个从未考虑过安全的产品,至少是不完整的。
6、白帽子兵法
安全评估最后的产物是安全方案,这一部分主要讲具体设计安全方案时会用到的技巧。
6.1 Secure By Default
在设计安全方案时,最基本也是最重要的原则就是“Secure By Dafault”,其主要有两层含义:白名单、黑名单思想和最小权限原则。
(1)白名单、黑名单
以用户访问网站为例,白名单是设置能访问的用户,白名单以外的用户不能访问;黑名单则是设置不能访问的用户,黑名单以外的用户都能访问。
(2)最小权限原则
最小权限原则要求系统只授予主体必要的权限,而不要过度授权。例如,在linux系统中,用户分为普通用户和root用户。
6.2 纵深防御原则
纵深防御原则包含两层含义:
- 第一,要在各个不同层面、不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体;
- 第二,要在正确的地方做正确的事,即在解决根本问题的地方实施针对性的安全方案。
6.3 数据与代码分离原则
数据与代码分离原则是重要的安全准则,这一原则广泛适用于各种由于“注入”而引发安全问题的场景。
6.4 不可预测性原则
上述:Secyre By Defualt,是时刻要牢记的总则;纵深防御,是要更全面、更正确地看待问题;数据与代码分离,是从漏洞成因上看问题;而,不可预测性是从克服攻击方法的角度看问题。
比如,windows中使用的ASLR技术,使得程序在启动时,每次地栈基址都不同,具有一定的随机性,对于攻击者来说,这就是不可预测性。不可预测性,能有效对抗基于篡改、伪造的攻击。不可预测性地实现往往需要使用到加密算法、随机数算法、哈希算法。
参考文献
- 《白帽子讲web安全》
版权归原作者 PT_silver 所有, 如有侵权,请联系我们删除。