本书是作者结合 18 年来在计算机安全教育和研发方面的经验编写而成的。
本书涵盖计算机和网络空间安全的基础知识,包括应用软件安全、Web 安全和网络安全。
本书旨在帮助读者了解各种各样的攻击和防御的思想与原理。 通过本书,
读者可以养成良好的安全思维习惯,正确评估计算机和网络所面临的风险,
提升发现和攻破软件及系统安全漏洞的能力,并提高设计实现软件的能力及系统防御能力。
本书最大的特点是理论与实践相结合。 对于每个涉及的理论,
本书都使用一系列实验帮助读者加深对理论的理解,目的是让读者得到亲身体验。
这些实验是作者花费 16 年心血精心设计的,它们已经在世界各地被广泛使用。
本书适用于学生、计算机科学家、计算机工程师、程序员、软件开发人员、
网络和系统管理员以及其他对计算机安全感兴趣的读者,可作为本科和研究生的计算机安全教材,
也可作为自学者提高计算机安全技能的学习材料。
本书的第一个特点是理论与实践相结合。对于每个书中涉及的理论,
本书都使用了一系列实验帮助读者加深对理论的理解,目的是让读者得到亲身体验,
而不仅仅是从字面上获取知识。在这些实验中,有些是几分钟即可完成的小实验,
有些则是需要花费较长时间、比较复杂的实验。
例如,在介绍一个攻击时,本书不仅仅是讲解攻击的原理,更重要的是使读者了解攻击过程,
并指导读者在本书提供的实验环境中亲自动手发动这个攻击。在介绍安全机制,
例如防火墙和虚拟专用网(VPN)时,本书会指导读者亲自动手开发一个小型的防火墙或 VPN,
而不只是简单地介绍一些抽象的原理。
本书中的大部分实验都基于笔者花费 16 年心血设计的 SEED 实验,
这些实验已经在世界各地被广泛使用。截至目前,
大约有 65 个国家的 1000 多所学校在使用这些实
验,包括大学、专业技校,甚至一些高中。
所有这些实验都可以在笔者的SEED 网站 免费下载。
读者在学习完每一章后,都可以找到一个对应 的 SEED 实验,
通过这些实验巩固对书中知识的理解。
书中所有的实验都可在由笔者提供的 Ubuntu 16.04 虚拟机映像中进行。
该虚拟机可以从 SEED 网站下载。
实验所需要的一切环境已经在虚拟机中安装和配置好了,
读者只需下载这个免费的虚拟机并在 VirtualBox 中运行,
即可开展书中设计的各种实验。笔者将每隔几年定期升级虚拟机映像。
本书的第二个特点是注重知识体系的建立。
计算机安全中的不少攻击和防御方法表面上看起来不同,
但如果深入研究的话,会发现它们其实是相似的或有关联。有些内容看起来相似,
本质上却有所不同。这就是知识点的相关性。只有将不同的知识点联系起来,
读者才能在脑海中形成知识体系。这是学习的更高境界,
也是一个好的教育者希望学生真正学到的。因此,
本书不希望成为一本计算机安全方面的“百科全书”,而是希望帮助读者建立完善的知识体系。
例如,在介绍完 SQL 注入攻击后,本书将几个注入攻击放在一起,
讨论它们共同的根本原因,并解释为什么针对它们的防御措施在本质上是相似的。
计算机安全知识更新很快,每天都有新的漏洞和攻击出现。
有了扎实的知识体系,读者就不会疲于学习这些新知识,因为很多东西万变不离其宗。
本书的第三个特点是深入细节、讲解透彻。计算机安全虽然涉及不少理论,
但并不是一门理论学科,而是一门和计算机系统密切相关的学科。
不少教材在介绍计算机安全原理时只停留在理论层面,很多计算机系统的相关细节都被抽象掉了。
这就导致很多人只懂理论,不会实践,因为有太多的细节不清楚。
笔者本人在刚当教授时也犯过这种错误。当讲完缓冲区溢出的原理后,
安排学生花一周时间完成攻击实验,结果一个多月过去了,也没有几个学生能够完成。
后来发现原因不在学生身上,因为其中涉及了太多的细节。一个细节没搞清楚,
攻击就无法成功。没有正确的引导,大部分初学者很难琢磨出全部细节。
即使是有能力的学生,也需要花很多时间,走不少冤枉路。
虽然走冤枉路也是一个学习的过程,但是如果能对学生进行正确引导,
他们学习的效率就会大大提高。为了达到这个目的,
本书在细节上绝不吝惜笔墨,在介绍一个知识点时,会循序渐进地把它讲解透彻。
例如,对于缓冲区溢出,一般课堂上 30 分钟就可以讲完,本书却用了整整两章,
从数据在计算机内存中是如何分布的,到攻击的原理和难点,如何克服难点,
如何进行防范,以及如何攻破某些防范措施等,通过循序渐进、由浅入深的方法将整个过程讲得清清楚楚。