1.8 最低权限原则
根据最低权限原则,系统的每一个程序和用户只应赋予能够完成它们操作所需要的最低权限[Saltzer 1974,Saltzer 1975] 。“构建安全的网站”(Build Security In Website)[DHS 2006]?这篇文章补充说明了这个原则。以最低权限运行可以降低因为代码中的安全漏洞而带来的安全问题的严重性。
体现最低权限原则的规则如下所示:
定义权限的所谓安全策略必须有严格的控制。当Java程序有安全管理器时,通过默认的安全策略文件进行权限控制;然而,Java灵活的安全模型允许用户赋予应用更多的权限,这可以通过自定义安全策略来完成。
Java代码若想提高权限的话,需要使用代码签名。很多安全策略允许具备签名的代码以提高后的权限来执行。只有那些需要提升权限的代码需要签名,对其他代码来说,是不需要签名的(请参考规则ENV00-J。)
在同一个JAR文件内,已签名的代码会与未签名的类共存。建议将所有的特权代码打成一个包(详情请参考规则ENV01-J)。此外,根据安全策略,可以基于代码或签名器为代码赋予特定权限。
特权操作权限应该只提供给那些最少的需要特权的代码。Java的AccessController机制允许只有需要的代码可以获得权限提升。当一个类需要主张其权限时,在?doPrivileged()?代码块中,执行特权代码即可。AccessController?机制需要与安全策略一起发挥作用。由于用户可能不清楚安全模型的相关细节,所以并不能根据它们的需求正确配置安全策略,在doPrivileged()代码块中出现的特权代码必须是最少的,从而避免出现安全漏洞。
时间: 2024-09-26 05:10:20