阅读本次缘由
从小对计算机有着浓厚的兴趣,十几岁时受到媒体报道的影响非常向往‘黑客’这个群体,认为在这个群体里的天才一定非常的多,网络解决了距离的困扰,能和他们沟通一定非常的酷。
如何知道这本书的早已记不清了,作者吴翰清的微信公众号《道哥的黑板报》。顺便推荐另一个微信公众号《懒人在思考》,就我所知这个公众号现在(1564826398)应该是余弦的团队在维护。说道余弦就让我想起了 知道创宇研发技能表。
读书笔记
本书结构(书中 <前言> 有详细介绍)
我的安全世界观
- 此篇中先回顾了安全的历史,然后阐述了笔者对安全的看法与态度,并提出了一些思考问题的方式以及做事的方法。理解了本篇,就能明白全本中所涉及的解决方案在抉择时的取舍。
客户端脚本安全
- 当网站的安全做到一定程度后,黑客可能难以再找到类似注入攻击、脚本执行等高风险的漏洞,从而可能将注意力转移到客户端脚本攻击上。
服务器端应用安全
- 服务端应用问题进行阐述。这些问题往往能引起非常严重的后果,在网站的安全建设之初需要有限解决这些问题,避免留下任何隐患。
互联网公司安全运营
- 提出大安全运营的思想。安全是一个持续的过程,最终仍然要由安全工程师来保证结果。
笔记
安全工程师的核心竞争力不在于他能拥有多少个 0day,掌握多少种安全技术,而是在于他对安全理解的深度,以及由此引申的看待安全问题的角度和高度。—– <前言.对互联网安全的思考>
互联网本来是安全的,自从有了研究安全的人之后,互联网就变得不安全了。—– <1.序言>
整个互联网笼罩在黑色产业的阴影之下,每年数十亿的经济损失和数千万的网民受害,以及黑客精神的死亡,使得我们没有理由不把此时称为黑暗时代。也许黑客精神所代表的 Open、Free、Share,真的一去不复返了!—– <1.1.1>
在早期互联网中,Web 并非互联网的主流应用,相对来说,基于 SMTP、POP3、FTP、IRC 等协议的服务器拥有着绝大多数的用户。 —– <1.1.2>
在早期互联网中。相对于那些攻击系统软件的 exploit 而言,基于 Web 的攻击,一般只能让黑客获得一个较低权限的账户,对黑客的吸引力远远不如直接攻击系统软件。 —– <1.1.2>
防火墙技术的兴起改变了互联网安全的格局。尤其是以 Cisco、**华为**等为代表的网络设备厂商,开始在网络产品中更加重视网络安全,最终改变了互联网安全的走向。防火墙、ACL 技术的兴起,使得直接暴露在互联网上的系统得到了保护。 —— <1.1.2>
2003 年的冲击波蠕虫是一个里程碑式的事件,这个针对 Windows 操作系统 RPC 服务(运行在 445 端口)的蠕虫,在很短的时间内席卷了全球,造成了数百万台机器被感染,损失难以估量。在此次事件后,网络运营商们很坚决地在骨干网络上屏蔽了 135、445 等端口的连接请求。 —– <1.1.2>
在互联网安全领域所经历的这个阶段,还有另外一个重要的分支,即桌面安全,或者叫客户端软件安全。其代表是浏览器攻击。一个经典的攻击场景是,黑客构造一个恶意网页,诱使用户使用浏览器访问该网页,利用浏览器中存在的某些漏洞,比如一个缓冲区溢出漏洞,执行 shellcode,通常情况是下载一个木马并在用户机器里执行。常见的针对桌面软件的攻击目标,还包括 Office 系列、Adobe Acrobat Reader、多媒体播放软件、压缩软件等装载量大的流行软件
Web 版本时期黑客们的主要关注点
动态脚本语言的普及,以及 Web 技术发展初期对安全问题认知的不足导致很多“血案”的发生,同时也遗留下很多历史问题,比如 PHP 语言至今仍然只能靠较好的代码规范来保证没有文件包含漏洞,而无法从语言本身杜绝此类安全问题的发生。(该书的出版时间为:2012年3月) —– <1.1.3>
SQL 注入的出现是 Web 安全史上的一个里程碑,它最早出现大概是在 1999 年,并很快就成为 Web 安全的头号大敌。—– <1.1.3>
XSS 的出现则是 Web 安全史上的另一个里程碑。实际上,XSS 的出现时间和 SQL 注入差不多,但是真正引起人们重视则是在大概 2003 年以后。在经历了 MySpace 的XSS 蠕虫事件后,安全界对 XSS 的重视程度提高了很多,OWASP 2007 TOP 10 威胁甚至把 XSS 排在榜首。—– <1.1.3>
对于黑帽子来说,只要能够找到系统的一个弱点,就可以达到入侵系统的目的;而对于白帽子来说,必须找到系统的所有弱点,不能有遗漏,才能保证系统不会出现问题。—– <1.2>
从对待问题的角度来看,黑帽子为了完成一次入侵,需要利用各种不同漏洞的组合来达到目的,是在不断地组合问题;而白帽子在设计解决方案时,如果只看到各种问题组合后产生的效果,就会把事情变复杂,难以细致入微地解决根本问题,所以白帽子必然是在不断地分解问题,再对分解后的问题逐个予以解决。—– <1.2>
一般来说,白帽子选择的方法,是克服某种攻击方法,而并非抵御单次的攻击。比如设计一个解决方案,在特定环境下能够抵御所有已知的和未知的 SQL Injection 问题。—– <1.2>
最大的漏洞就是人!—– <1.2>
如果新技术不再一开始就考虑安全设计的话,防御攻击就必然会落后于攻击技术,导致历史不断重复。—– <1.2>
安全问题的本质是信任的问题。一切的安全方案设计的基础,都是建立在信任关系上的。我们必须相信一些东西,必须有一些最基本的假设,安全方案才能得以建立;如果我们否定一切,安全方案就会如无源之水,无根之木,无法设计,也无法完成。—– <1.3>
安全是一个持续的过程。—– <1.4>
安全三要素是安全的基本组成元素,分别是机密型(Confidentiality)、完整性(Integrity)、可用性(Availability)。—– <1.5>
- 机密性:要求保护数据内容不能泄漏,加密是实现机密性要求的常见手段。
- 完整性:要求保护数据内容是完整、没有被篡改的。常见的保证一致性的技术手段是数字签名。
- 可用性:要求保护资源是“随需而得”。
一个安全评估的过程,可以简单地分为 4 个阶段:资产等级划分、威胁分析、风险分析、确认解决方案。—– <1.6>
我们把可能造成危害的来源称为威胁(Threat),而可能会出现的损失称为风险(Risk)。—– <1.6.2>
一个优秀的安全方案应该具备以下特点:能够有效解决问题、用户体验好、高性能、低耦合、易于扩展与升级。
最小权限原则要求系统只授予主体必要的权限,而不要过度授权,这样能有效地减少系统、网络、应用、数据库出错的机会。
纵深防御包含两层含义:首先,要在各个不同层面、不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要互相配合,构成一个整体;其次,要在正确的地方做正确的事情,即:在解决根本问题的地方实施针对性的安全方案。