本书对Java代码研发人员的意义

在编写本书的时候,我们将研发部门视为一类重要的读者群体。我们曾经和规模大小不一、业务类型各异的客户进行过交流。在交流的时候,可以明显地感觉到“偏科现象”。例如,产品经理、项目经理重业务而轻安全,开发人员可以编写丰富多彩的应用却不了解网站安全漏洞,测试人员可以抓住Bug但擒不住漏洞。

“术业有专攻”,某些研发部门对应用安全的认识有所欠缺是情有可原的。然而,研发部门未知的“代码安全技术盲区”常常和攻击者已知的“攻击利用方式”有着高度重合,这使许多Web应用曾经失陷,或者正面临着极大的安全风险。基于此,广受业界关注的SDL(Security Development Life cycle,安全开发周期)与安全左移(Shift Left)对于“筑牢Web应用的安全地基”具有重要意义。

“解铃还须系铃人”,在SDL和安全左移中,编码均是核心环节。若负责编码的开发人员能够在开发阶段通过代码审计发现安全问题,并通过安全编码解决这些问题,将为应用产生深远的良性影响。例如,对于XXE漏洞的防御,若开发人员可在不影响系统业务的前提下做“禁止引用外部实体”的设置,即可起到“一夫当关,万夫莫开”的效用,也无须另外部署WAF;再如,对于越权漏洞,许多安全产品并不具备该项检测能力,为了治本,开发人员通过代码审计与安全编码技能做漏洞修复的效果显然更好。

“谋定而后动,知止而有得”,我们发现在不少Java开发人员身上有这样的痛点:“虽初具Web应用开发的安全意识,却仍存在‘面积较大的技术盲区’,并且暂未建立起代码审计与安全开发的知识、技术框架。”对于此,希望这本系统地介绍Java代码安全审计入门技术的图书可以帮助开发人员缓解这一痛点。希望本书的核心章节可以帮助开发人员了解安全人员做Web漏洞挖掘时在想什么,并思考、绘制属于自己的Java安全知识、技能结构图,能知己知彼,百战不殆。本书可以作为Java开发人员的代码审计入门宝典与安全开发实战指南。读者可以借此书夯实Java安全基本功,在面对不断演化的技术栈时也能以不变应万变。