非常感谢刺总(道哥、大风) 为《代码审计:企业级Web代码安全架构》作序,刺是我工作以来的第一位主管,在工作上给了我莫大的帮助,对我有知遇之恩,下面的内容是刺为本书所作的序:
序言
我第一次见到尹毅是2013年在北京中关村。那时候我正在安全宝创业,我们需要招募到最好的人才。这时候尹毅的博客吸引了我,在一个技术分享逐渐枯竭的时代,他的博客令人眼前一亮。然后我试图联系到了他,并邀请到北京来聊一聊。
让我大吃一惊的是,尹毅当时还是一个孩子模样,但是时不时能从生涩的脸庞里看到成熟。在这个年纪就出来工作,我想他一定吃过很多苦。在之后的工作中,尹毅展现出了惊人的天赋。交给他的工作总是能迅速并出色地完成,并时不时会在工作中有一些创新性成果令人惊喜。他的自驱力极强,总是不满足于简单的工作,于是我不得不想出一些更复杂和艰难的挑战交给他。
2014年9月,安全宝分拆了部分业务被阿里收购,我带着尹毅一起到了阿里。此时他已经成为一个安全团队的Leader,在中国最大的互联网公司里贡献着力量。
尹毅学东西很勤奋,他平时的业余时间就是写代码,或者看技术文章,因此进步迅速。他很快就在Web漏洞挖掘能力方面有了长足的进步,并取得了不错的成绩,他陆续发现了好些开源软件的高危漏洞。最难能可贵的是,他开始逐步总结这些经验,并且沉淀在自己开发的一个漏洞挖掘工具里。这让他学会了如何从重复的体力劳动中解放出来,把精力用在更有价值的地方。这是一个优秀黑客应具有的特质:厌倦重复性的体力劳动,而对创新充满着无限的热情和旺盛的精力。
尹毅认为,一个好的黑客,必须要懂编程。这也是他在这本书里所倡导的理念。在他看来,不懂编程、没挖过漏洞的黑客,充其量只能算“脚本小子”。所以,尹毅在本书的出发点是从代码审计开始,通过代码审计,去发现和挖掘漏洞。
漏洞挖掘是一门艺术,同时也是信息安全的核心领域。安全技术发展到今天,常见的漏洞挖掘技术有代码审计、黑盒测试、Fuzzing、逆向分析等。每一种技术都有独到之处,而其中,代码审计又是最基本、最直接的一种方式,是每一个安全专家都应该掌握的技能。
但时至今日,全自动化的代码审计仍然存在很多困难,主要难点在于理解编程语言的语法、跨文件之间的关联调用、理解开发框架、业务逻辑等地方。因为这些困难在短期内难以克服,所以通过代码审计来挖掘漏洞,仍然是一种极具技巧性和需要丰富经验的工作。在本书中,尹毅根据他自身的经验和学习成果,对这些知识技巧做了一个很好的总结。
本书虽然主要讲述的是PHP代码安全问题,但其中的很多思想和案例都非常具有代表性。同时,因为互联网上大量的Web应用都是由PHP写成的,因此研究PHP代码安全对于整个互联网Web安全的研究具有至关重要的作用。对于新人来说,非常建议从本书中讲述的内容开始学习。
吴翰清,阿里云云盾负责人,《白帽子讲Web安全》作者
2015.9.20