java程序员必读的书,安全程序员必读书籍清单

安全程序员必读书籍清单 - 网络安全 - 电脑教程网

安全程序员必读书籍清单

日期:2006-07-26   荐:
现在出了很多关于安全的好书,虽然我的安全书库剧增,但是这些资源大多都是围绕网络安全的。保证系统或者应用程序的安全不仅仅是要把黑客挡在网络之外。大部分编写安全书籍的作者似乎忽略了开发阶段的安全,而选择将注意力集中在(阻击)黑客、黑客技术,以及抵御来自网络的威胁上,这可能是因为关于黑客的书好销吧。但是,开发人员必须理解并按照合理的安全原则创建安全的应用程序,但是很少有书能够提供这样的信息。那么开发人员应该做什么呢?


你必须读的书










我为关注安全(或者想要关注安全)的开发人员列出了一个必读书籍的清单。我书单里的资源高屋建瓴地从设计的角度详细地讲解了开发原则——它们详细描述了需要做什么,还为理解这些原则提供了轻松的方法。总而言之,这些书籍为理解以安全为中心的应用程序开发打下了基础。


在这个书单里,你会发现我没有收录针对实际产品的参考书。尽管这样的参考书在安全产品的市场上有一席之地,但是我选择了排除它们,这是因为它们不能提供“什么”和“为什么”——也就是说,不能提供超越各个平台专用上实际产品的安全原则。例如,关于在J2EE里实现(安全)审查的书会具体地指出如何实现审查,但是不会告诉你什么时候才需要进行审查以及为什么要进行审查。我碰到过许多优秀的程序员,他们知道如何把安全功能集成到应用程序里,但是却不能创建一个安全的系统,因为他们不了解安全的基础。知道“什么”以及“为什么”同了解“如何”是同等重要的。

我唯一的例外是收录了下面两本涉及具体产品的详细参考书:由Poundstone集团出版的《黑客大曝光(Hacking EXPosed)》第三版,以及New Riders出版的《Internet防火墙和网络安全(Internet Firewalls and Network Security)》。尽管这两本书和开发没有多少联系,但是它们通过叙述安全三角的其他两面平衡了开发安全理论:黑客心理和方法以及网络安全的支持。开发人员必须懂得黑客的心理,否则他们将无法成功地抵御来自黑客的进攻。开发人员还必须懂得如何创建能够同现代网络防御以及防御技术相互操作的应用程序。这两本书都让其成为可能。


--------------------------------------------------------------------------------


下面是必读书籍列表:


_target>国家标准和技术研究所(National Institute of Standards and Technology,NIST)编写的《彩虹系列(Rainbow Series)》。

Hutt、Bosworth和Hoyt编著的_target>《计算机安全手册(The Computer Security Handbook)》。

Howard和LeBlanc编著的_target>《编写安全代码(Writing Secure Code)》。

Viega和McGraw编著的_target>《编写安全的软件:如何避免安全问题的正确方法(Building Secure Software: How to Avoid Security Problems the Right Way)》。

McClure、Scambray和Kurtz编著的_target>《黑客大曝光》。

Siyan和Hare编著的_target>《Internet防火墙和网络安全》。

--------------------------------------------------------------------------------


《彩虹系列》在_target>SecurityFocus的Web网站可以免费下载。尽管《彩虹系列》是80年代末出版的,但是它是现代安全思想的基础。这是个无价的资源——这是每位程序员都应该拥有的参考书。我的书桌上就放着《彩虹系列》的《桔皮书(Orange Book)》、《褐皮书(Tan Book)》和《紫皮书(Lavender Book)》——这个系列其他的书我都保存在了触手可及的光盘里。这一系列里最重要的指导手册就是《桔皮书》了;它描述和解释了“受信计算库(trusted computing base)以及安全理论的基本原则。尽管它太厚了不太容易记,但是所有的开发人员都应该通晓这本《桔皮书》。它是免费的,所以没有理由不来一本。


安全分析



《计算机安全手册》是难以置信地透彻,所以要花上不少时间去通读和消化。这一资源中的很多内容都是专门针对安全分析专家的,因此无法(直接)应用到开发上。我建议开发人员把注意力放在第一章《管理角色(Management Role)》和第十章《系统应用程序控件(System Applications Controls)》上。第一章巩固了安全的基本原则。第十章将这些基本原则融入了一个开发模型——创建安全系统的路线图。这两章都相对较短,而且所给的信息都会引导开发人员走向正确的方向。

[1] [2]  



开发人员对安全所负的责任

《编写安全代码》和《编写安全的软件》这两本书都讲解了计算机安全,就好像它是开发人员的职责一。我并不完全同意系统被攻击都是程序员的错误,他们有责任在设计和编码的时候编写正确的代码并遵从最佳的安全惯例。在读完这两本参考书之后,你会意识到:硬件生产商也应该参与到安全中来。

硬件能够被用来跳过安全机制的一个好例子就是BIOS的密码。很注意安全的人会在其台式机上设置BIOS密码,以防止未经授权的使用——但是密码很容易就能够被绕过去,因为硬件生产商设计了一个跳过密码的方法(在主板上跳几下线就行了)。这本书里提出的原则是合理的。但是在你读这些书的时候,你要要记住,安全不仅仅是好的软件来保证。


黑客攻击的秘密

我最喜欢读的书是《黑客大曝光》。这本书的作者深入了身处暗处的黑客的心理和方法。虽然这本书里使用的方法和工具可能有点落伍了,但是它仍然是有价值的参考资料。其思想不是学习如何去黑别人,而是选取典型的攻击方法来解释如何创建抵御它们的防卫机制。毕竟,最好的防御需要你对对手攻击手法的了解。


网络安全

最后,《Internet防火墙和网络安全》解释了网络安全的基础,并完成了安全图。如果系统要被放在目标环境里,那么它们就必须设计同防火墙、入侵检测系统和VPN一起工作。我碰到过许多程序员,他们坚持认为网络防御组件不会影响其设计。虽然防御组件不会影响(整体)设计,但是目标网络的防御组件常常表现不佳,而且性能极差。要跟上网络技术的所有变化是很难的,但是Siyan博士完成一项伟大的工作,他(她)描绘了防火墙技术,并将其放在了Internet威胁和基本网络安全的大背景下。

我在收录用于开发安全的单一资源上可能存在问题,所以有很多东西值得商榷。前面列出的六本参考书相互补充,构成一幅完整的安全图。每一位关注安全的程序员都应该把它们归入他或者她的专业书库里。

(出处:http://www.sheup.com)


 [1] [2] 

(出处:http://www.sheup.com)


 [1] [2] [3] 

标签: