《Java安全编码标准》一1.8 最低权限原则

简介: 本节书摘来自华章出版社《Java安全编码标准》一书中的第1章,第1.8节,作者 (美)Fred Long,Dhruv Mohindra,Robert C. Seacord,Dean F. Sutherland,David Svoboda,更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.8 最低权限原则

根据最低权限原则,系统的每一个程序和用户只应赋予能够完成它们操作所需要的最低权限[Saltzer 1974,Saltzer 1975] 。“构建安全的网站”(Build Security In Website)[DHS 2006]?这篇文章补充说明了这个原则。以最低权限运行可以降低因为代码中的安全漏洞而带来的安全问题的严重性。
体现最低权限原则的规则如下所示:
image

定义权限的所谓安全策略必须有严格的控制。当Java程序有安全管理器时,通过默认的安全策略文件进行权限控制;然而,Java灵活的安全模型允许用户赋予应用更多的权限,这可以通过自定义安全策略来完成。
Java代码若想提高权限的话,需要使用代码签名。很多安全策略允许具备签名的代码以提高后的权限来执行。只有那些需要提升权限的代码需要签名,对其他代码来说,是不需要签名的(请参考规则ENV00-J。)
在同一个JAR文件内,已签名的代码会与未签名的类共存。建议将所有的特权代码打成一个包(详情请参考规则ENV01-J)。此外,根据安全策略,可以基于代码或签名器为代码赋予特定权限。
特权操作权限应该只提供给那些最少的需要特权的代码。Java的AccessController机制允许只有需要的代码可以获得权限提升。当一个类需要主张其权限时,在?doPrivileged()?代码块中,执行特权代码即可。AccessController?机制需要与安全策略一起发挥作用。由于用户可能不清楚安全模型的相关细节,所以并不能根据它们的需求正确配置安全策略,在doPrivileged()代码块中出现的特权代码必须是最少的,从而避免出现安全漏洞。

相关文章
Java智慧工地(源码):数字化管理提升施工安全与质量
随着科技的发展,智慧工地已成为建筑行业转型升级的重要手段。依托智能感知设备和云物互联技术,智慧工地为工程管理带来了革命性的变革,实现了项目管理的简单化、远程化和智能化。
55 5
探索 Java 权限修饰符的奥秘
本文深入探讨了Java中的权限修饰符
62 12
Java 异常处理:筑牢程序稳定性的 “安全网”
本文深入探讨Java异常处理,涵盖异常的基础分类、处理机制及最佳实践。从`Error`与`Exception`的区分,到`try-catch-finally`和`throws`的运用,再到自定义异常的设计,全面解析如何有效管理程序中的异常情况,提升代码的健壮性和可维护性。通过实例代码,帮助开发者掌握异常处理技巧,确保程序稳定运行。
88 2
|
4月前
|
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
87 4
Java 泛型深入解析:类型安全与灵活性的平衡
Java 泛型通过参数化类型实现了代码重用和类型安全,提升了代码的可读性和灵活性。本文深入探讨了泛型的基本原理、常见用法及局限性,包括泛型类、方法和接口的使用,以及上界和下界通配符等高级特性。通过理解和运用这些技巧,开发者可以编写更健壮和通用的代码。
|
6月前
|
java安全特性
java安全特性
50 8
Java修饰符与封装:理解访问权限、行为控制与数据隐藏的重要性
Java中的修饰符和封装概念是构建健壯、易维护和扩展的Java应用程序的基石。通过合理利用访问权限修饰符和非访问修饰符,开发者能够设计出更加安全、灵活且高效的代码结构。封装不仅是面向对象编程的核心原则之一,也是提高软件项目质量和可维护性的关键策略。
62 1
【性能与安全的双重飞跃】JDK 22外部函数与内存API:JNI的继任者,引领Java新潮流!
【9月更文挑战第7天】JDK 22外部函数与内存API的发布,标志着Java在性能与安全性方面实现了双重飞跃。作为JNI的继任者,这一新特性不仅简化了Java与本地代码的交互过程,还提升了程序的性能和安全性。我们有理由相信,在外部函数与内存API的引领下,Java将开启一个全新的编程时代,为开发者们带来更加高效、更加安全的编程体验。让我们共同期待Java在未来的辉煌成就!
141 11
【本地与Java无缝对接】JDK 22外部函数和内存API:JNI终结者,性能与安全双提升!
【9月更文挑战第6天】JDK 22的外部函数和内存API无疑是Java编程语言发展史上的一个重要里程碑。它不仅解决了JNI的诸多局限和挑战,还为Java与本地代码的互操作提供了更加高效、安全和简洁的解决方案。随着FFM API的逐渐成熟和完善,我们有理由相信,Java将在更多领域展现出其强大的生命力和竞争力。让我们共同期待Java编程新纪元的到来!
250 11