- 定价:¥59.00
- 校园优惠价:¥41.30 (70折) (马上了解)
- 评分:
(已有2条评价)
- 电子书:代码审计:企业级Web代码安全架构
- 促销活动:
- 我要买:
基本信息

编辑推荐
·全方位介绍代码审计,丛审计环境的准备到审计思路、工具的使用以及功能的安全设计原则,涵盖了大量工具和方法。
·针对各种实际漏洞案例进行剖析,不仅分析了漏洞的成因,还给出了具体防御方案,方法简洁实用,讲解一针见血。
内容简介
计算机书籍
本书详细介绍代码审计的设计思路以及所需要的工具和方法,不仅用大量案例介绍了实用方法,而且剖析了各种代码安全问题的成因与预防策略。对开发人员和安全技术人员都有参考价值。本书共分为三个部分,第一部分为代码审计前的准备,详细介绍代码审计前需要了解的PHP核心配置文件、PHP环境搭建的方法、代码审计需要的工具,以及这些工具的详细使用方法。第二部分着重介绍PHP代码审计的中漏洞挖掘思路与防范方法,包括代码审计的思路、常见漏洞的审计方法、二次漏洞的挖掘方法、代码审计过程中的一些常用技巧。第三部分主要介绍PHP安全编程规范,从攻击者的角度来告诉你应该怎么写出更安全的代码,包括参数的安全过滤、PHP中常用的加密算法、常见功能通常会出现的安全问题、企业的应用安全体系建设等。
作译者
目录
序言
前言
导读
第一部分 代码审计前的准备
第1章代码审计环境搭建2
1.1 wamp/wnmp环境搭建2
1.2 lamp/lnmp环境搭建4
1.3 PHP核心配置详解6
第2章审计辅助与漏洞验证工具14
2.1 代码编辑器14
2.1.1 Notepad++15
2.1.2 UltraEdit15
2.1.3 Zend Studio19
2.2 代码审计工具21
2.2.1 Seay源代码审计系统21
2.2.2 Fortify SCA24
2.2.3 RIPS25
2.3 漏洞验证辅助27
2.3.1 Burp Suite27
前言
为什么需要代码审计
代码审计是企业安全运营以及安全从业者必备的基础能力。代码审计在很多场景中都需要用到,比如企业安全运营、渗透测试、漏洞研究等。目前已经有不少公司在推广微软的软件SDL(Security Development Lifecycle,安全开发周期),它涵盖需求分析→设计→编码→测试→发布→维护,安全贯穿整个软件开发周期,其中设计、编码和测试是整个SDL的核心,安全问题大多在这里被解决掉。其中在安全设计这块,必须要非常了解漏洞形成原理,纵观全局。而在代码实现也就是编码阶段,安全依靠于编程人员的技术基础以及前期安全设计的完善性。然后是测试,测试包括白盒测试。黑盒测试以及灰盒测试。黑盒测试也叫功能测试,是指在不接触代码的情况下,测试系统的功能是否有bug,是否满足设计需求。而白盒测试就是我们说的代码审计,以开放的形式从代码层面寻找bug,如果发现有bug则返回修复,直到没有bug才允许软件发布上线。
渗透测试人员掌握代码审计是非常重要的,因为我们在渗透过程中经常需要针对目标环境对payload进行调试。另外,如果通过扫描器扫描到Web目录下的一个源码备份包,通常攻击者都会利用源码包找一些配置文件,因为里面有数据库、API等一类配置。如果环境有限制,比如目标站数据库限制连接IP等,那么工具小子可能在源码包进行的漏洞利用也就到此为止。对于懂代码审计的人,结果完全不一样,他可以对源码包进行安全审计,发现网站代码里存在的漏洞,然后利用挖掘到的漏洞进行渗透。
编程能力要求
代码审计对编程语言的基础有一定要求,至少要能看得懂代码,这里说的看懂代码不是简单地理解几个if...else语句和for循环,而是能看懂代码的逻辑,即使有很多函数没见过,也是可以到Google去查的。都说编程在语言这块是一通百通,只要我们对编程思想理解得非常透彻,重新接触一种编程语言也是非常快就能上手的,所以不管你之前写过Java还是C#程序,想玩一玩PHP的代码审计都应该不是什么大问题。
代码审计环境准备
代码审计首先要准备的是审计环境工具,不同的环境会影响漏洞的利用,所以建议Linux和Windows系统下的PHP环境都搭建一套,并且需要多个PHP版本。关于版本切换这块,建议安装phpStudy,phpStudy是一套Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader的集成环境,可以很方便地安装和切换环境。代码审计的工具有很多个,这里推荐使用笔者开发的Seay源代码审计系统以及RIPS,二者都是免费开源工具。
除了自动化审计工具外,还有一些像Burp Suite、浏览器扩展以及编码工具等审计辅助工具也都是必备的。
代码审计思路
通常做代码审计都是检查敏感函数的参数,然后回溯变量,判断变量是否可控并且没有经过严格的过滤,这是一个逆向追踪的过程。而代码审计并非这一种手段,还可以先找出哪些文件在接收外部传入的参数,然后跟踪变量的传递过程,观察是否有变量传入到高危函数里面,或者传递的过程中是否有代码逻辑漏洞,这是一种正向追踪的方式,这样的挖掘方式比逆向追踪挖掘得更全。还有一种方式是直接挖掘功能点漏洞,根据自身的经验判断该类应用通常在哪些功能中会出现漏洞,直接全篇阅读该功能代码。
可能不少新手对于学习PHP代码审计还有一些迷茫,或许之前尝试过学习,但一直没有很好的进展,因为代码审计是一门很专的技术活,要学好PHP代码审计,需要掌握以下几点:
PHP编程语言的特性和基础。
Web前端编程基础。
漏洞形成原理。
代码审计思路。
不同系统、中间件之间的特性差异。
序言
让我大吃一惊的是,尹毅当时还是一个孩子模样,但是时不时能从生涩的脸庞里看到成熟。在这个年纪就出来工作,我想他一定吃过很多苦。在之后的工作中,尹毅展现出了惊人的天赋。交给他的工作总是能迅速并出色地完成,并时不时会在工作中有一些创新性成果令人惊喜。他的自驱力极强,总是不满足于简单的工作,于是我不得不想出一些更复杂和艰难的挑战交给他。
2014年9月,安全宝分拆了部分业务被阿里收购,我带着尹毅一起到了阿里。此时他已经成为一个安全团队的Leader,在中国最大的互联网公司里贡献着力量。
尹毅学东西很勤奋,他平时的业余时间就是写代码,或者看技术文章,因此进步迅速。他很快就在Web漏洞挖掘能力方面有了长足的进步,并取得了不错的成绩,他陆续发现了好些开源软件的高危漏洞。最难能可贵的是,他开始逐步总结这些经验,并且沉淀在自己开发的一个漏洞挖掘工具里。这让他学会了如何从重复的体力劳动中解放出来,把精力用在更有价值的地方。这是一个优秀黑客应具有的特质:厌倦重复性的体力劳动,而对创新充满着无限的热情和旺盛的精力。
尹毅认为,一个好的黑客,必须要懂编程。这也是他在这本书里所倡导的理念。在他看来,不懂编程、没挖过漏洞的黑客,充其量只能算“脚本小子”。所以,尹毅在本书的出发点是从代码审计开始,通过代码审计,去发现和挖掘漏洞。
漏洞挖掘是一门艺术,同时也是信息安全的核心领域。安全技术发展到今天,常见的漏洞挖掘技术有代码审计、黑盒测试、Fuzzing、逆向分析等。每一种技术都有独到之处,而其中,代码审计又是最基本、最直接的一种方式,是每一个安全专家都应该掌握的技能。
但时至今日,全自动化的代码审计仍然存在很多困难,主要难点在于理解编程语言的语法、跨文件之间的关联调用、理解开发框架、业务逻辑等地方。因为这些困难在短期内难以克服,所以通过代码审计来挖掘漏洞,仍然是一种极具技巧性和需要丰富经验的工作。在本书中,尹毅根据他自身的经验和学习成果,对这些知识技巧做了一个很好的总结。
本书虽然主要讲述的是PHP代码安全问题,但其中的很多思想和案例都非常具有代表性。同时,因为互联网上大量的Web应用都是由PHP写成的,因此研究PHP代码安全对于整个互联网Web安全的研究具有至关重要的作用。对于新人来说,非常建议从本书中讲述的内容开始学习。
吴翰清,阿里云云盾负责人,《白帽子讲Web安全》作者
2015.9.20