第13章 Java安全

安全性对于程序的重要性是不言而喻的。程序应该保证只有具备正确身份标识的用户才可以访问其所管理的数据,同时用户在访问数据时要满足由业务逻辑定义的访问控制权限的要求。不过,在程序的开发过程中,安全性与性能和可访问性等其他非功能性需求一样,在实现时的优先级通常低于程序的功能性需求。在程序开发过程中通常在比较靠后的阶段才考虑安全性相关的需求,这是因为开发人员通常更加专注于实现比较具体的功能模块。安全性等横切功能在每个具体功能模块的开发中都会遇到,一般的做法是把安全性相关的功能当成一个专门的模块,在程序的中后期专门实现。这种做法看似合理,但由于安全功能的重要性和复杂性,如果在程序开发的后期遇到了难以解决的安全性相关的问题,有可能需要对程序的架构做出比较大的调整,可能造成对前期已经完成的功能模块进行比较大的修改。正确的做法应该是在程序开发的早期就把安全性作为一个重要的模块进行考虑,并贯彻到整个程序的设计、开发和测试过程中。

在程序开发中经常会遇到两个与安全性相关的问题。第一个问题是忽视安全性。这个问题在桌面程序中的影响相对较小,因为使用桌面程序的用户通常是授权用户。如果在Web应用中忽视安全性,则可能带来非常严重的后果。第二个问题是忽视Java平台自身提供的与安全性相关的支持。Java平台提供了良好的安全性相关的功能,不仅可以用来保护Java平台本身,还可以作为程序自身安全功能的实现基础。本章的主要内容是介绍Java平台的安全性相关的功能,以及如何在程序开发中使用这些功能。