内容提要
本书由浅入深、全面、系统地介绍了Java代码审计的流程、Java Web漏洞产生的原理以及实战讲解,并力求语言通俗易懂、举例简单明了,便于读者阅读领会。同时结合具体案例进行讲解,可以让读者身临其境,快速了解和掌握主流的Java代码安全审计技巧。
阅读本书不要求读者具备代码审计的相关背景,如有相关经验,对理解本书内容会更有帮助。本书也可作为高等院校信息安全专业的教材。
本书对Java代码研发人员的意义
在编写本书的时候,我们将研发部门视为一类重要的读者群体。我们曾经和规模大小不一、业务类型各异的客户进行过交流。在交流的时候,可以明显地感觉到“偏科现象”。例如,产品经理、项目经理重业务而轻安全,开发人员可以编写丰富多彩的应用却不了解网站安全漏洞,测试人员可以抓住Bug但擒不住漏洞。
“术业有专攻”,某些研发部门对应用安全的认识有所欠缺是情有可原的。然而,研发部门未知的“代码安全技术盲区”常常和攻击者已知的“攻击利用方式”有着高度重合,这使许多Web应用曾经失陷,或者正面临着极大的安全风险。基于此,广受业界关注的SDL(Security Development Life cycle,安全开发周期)与安全左移(Shift Left)对于“筑牢Web应用的安全地基”具有重要意义。
“解铃还须系铃人”,在SDL和安全左移中,编码均是核心环节。若负责编码的开发人员能够在开发阶段通过代码审计发现安全问题,并通过安全编码解决这些问题,将为应用产生深远的良性影响。例如,对于XXE漏洞的防御,若开发人员可在不影响系统业务的前提下做“禁止引用外部实体”的设置,即可起到“一夫当关,万夫莫开”的效用,也无须另外部署WAF;再如,对于越权漏洞,许多安全产品并不具备该项检测能力,为了治本,开发人员通过代码审计与安全编码技能做漏洞修复的效果显然更好。
“谋定而后动,知止而有得”,我们发现在不少Java开发人员身上有这样的痛点:“虽初具Web应用开发的安全意识,却仍存在‘面积较大的技术盲区’,并且暂未建立起代码审计与安全开发的知识、技术框架。”对于此,希望这本系统地介绍Java代码安全审计入门技术的图书可以帮助开发人员缓解这一痛点。希望本书的核心章节可以帮助开发人员了解安全人员做Web漏洞挖掘时在想什么,并思考、绘制属于自己的Java安全知识、技能结构图,能知己知彼,百战不殆。本书可以作为Java开发人员的代码审计入门宝典与安全开发实战指南。读者可以借此书夯实Java安全基本功,在面对不断演化的技术栈时也能以不变应万变。
推荐序1
在我们实战经验中,Java相关组件的高危漏洞出现频次是比较高的。在2021年,我们就应急处理了多起Java类高危漏洞事件。在网络空间攻防战中,如果能抢先攻击者一步掌握漏洞信息,就能在防守中占据主导地位。代码审计是发现漏洞非常有效的一种手段,是黑盒渗透测试的一个重要补充。
作为一家从事网络安全的企业,承担社会责任是应有之义。本书撰写之时国内市场还没有Java代码安全审计相关的技术图书。它全面性地阐述了Java类代码审计的基础知识、审计流程、常用工具和相关的经典案例,是几位作者多年实战经验的总结;本书对甲方的安全建设和乙方的安全研究均大有裨益。它既可以作为Java类代码开发人员安全开发的参考图书,也可以作为Java代码审计安全研究人员的学习入门书籍。本书结构划分合理,逻辑缜密,案例丰富,讲解细致,讲练结合,从而能帮助零基础的读者快速入门,即便是基础较好的读者也能对照此书进行查缺补漏。相信本书将是我们掌握网络空间世界安全主动权的宝典之一。
“九层之台,起于累土”,一名合格的安全人需不断地汲取网络安全领域里前沿且全面的安全技术和技术知识,并且脚踏实地、稳扎稳打地提升自身综合的安全能力。愿这本载满诚意、安全新视角的图书能给予读者朋友帮助,也欢迎更多志同道合的安全人能借此书打开一扇“安全之门”,与安全狗一起守护数字世界,助力网络强国!