当谈到java安全机制的原理时,自然想到类SecurityManager。
当判断某个方法是非有权限执行时,都是采用如下方式:在该方法的开始地方check是非有权限。
例如,判定calling Thread 是非可以加载某类库时,
代码如下(取自loadLibrary0(Class fromClass, String libname)方法):
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkLink(libname);
}
像大致这样的代码遍布的java源码的各个角落,这样觉得太不好了.
比如上面代码,如果以后需要改变loadLibrary0方法的权限,怎么办呢?
你或许会说,修改SecurityManager中的checkLink不就行了吗? 这个肯定不行的,SecurityManager是个公共类,修改它或许会影响到其他地方。
你或许会想,在SecurityManager中新增一个方法,取名为checkLinkToLib,然后再修改上面提到的loadLibrary0方法。
这样做可以保证不影响其他,但是一个小小的需求却改动了两个地方,好像不是我们所情愿的。
============分割线=====================
我能想到的:对于现在安全机制的解决办法,是面向切面编程,这样灵活性就更大了。
分享到:
相关推荐
家庭理财系统是一个基于Java和Applet技术实现的项目,旨在帮助用户管理家庭...家庭理财系统的实现旨在为用户提供方便、安全和高效的家庭财务管理服务,帮助用户实现理性消费和财务规划,提高家庭财务管理的效率和水平。
类加载机制、Java 类文件结构、Java 反射等。除此之外,还涉及到了一个简单的并发问题:如何将一个非线程安全的类变为一个线程安全的类。因此,本项目较为适合在比较注重基础的面试中介绍给面试官,可以引出一些 ...
2. **插件开发**:通过开发Eclipse插件,可以在RTC客户端中集成特定的认证机制。这可能涉及对Eclipse插件模型的深入理解和使用,以及与RTC服务的交互。 3. **证书管理**:RTC服务器可以通过Java密钥库(JKS)或PKCS...
* Hibernate 框架提供了一个基于 ORM 的数据持久化机制,用于将 Java 对象映射到数据库表中。 通过使用 SSM 框架,可以快速构建高性能的 Web 应用程序,提高开发效率和降低维护成本。同时,通过使用 Mysql 数据库,...
- 多线程与并发:线程安全、同步机制、并发工具类如ExecutorService、Semaphore等。 - 输入/输出流:文件操作、网络通信、序列化等。 - 设计模式:工厂模式、单例模式、观察者模式等常见的设计模式。 - JVM内存模型...
5. **安全机制**:为了保护用户隐私,系统通常会包含用户登录验证、权限控制等安全措施,确保只有授权用户才能访问和修改财务数据。 通过这个家庭财务管理系统,用户可以方便地跟踪和管理家庭财务,提高理财效率,...
系统的核心功能包括收支记录、账户管理、预算设定、报表统计等,旨在帮助用户清晰地掌握自己的财务状况,实现理性消费和科学理财。以下是该项目的主要知识点: 1. **JSP(JavaServer Pages)**:JSP是一种动态网页...
用户通过租用云服务提供商的资源池,可以实现数据的在线存储,从而避免本地存储硬件投资和人员管理成本。专业云服务提供商提供的不仅仅是存储空间,还包括数据的高效管理技术和灾难性数据恢复功能,这为用户的信息...
- **Java泛型**:泛型是一种在编译时检查类型安全,并且所有的强制转换都是自动和隐式的机制。 - **Java集合**:Java集合框架主要包括Collection接口和Map接口两大类。 - **算法问题**:常见的排序算法(冒泡排序、...
随着Spring的发布与推广,开发者们逐渐认识到轻量级框架的优势,从而开启了Java开发领域的“理性时代”。 ### Spring核心特性:IoC与AOP #### 控制反转(IoC) IoC是Spring框架的核心思想之一,通过依赖注入(DI...
- **安全机制**: - **数据加密**:使用ECC和AES加密算法保护用户健康隐私数据。 - **权限管理**:通过角色权限划分,确保数据安全和个人信息安全。 #### 五、文献综述与参考案例 - **智能设备集成**:通过蓝牙与...
对于普通消费者来说,它则是避免被高价坑害、实现理性消费的有力武器。中关村报价器在IT产品价格信息获取领域的价值和意义,不容忽视,它为用户带来的便利和效益,是其在市场中获得认可和推崇的根基所在。
9. **版本控制与持续集成/持续部署(CI/CD)**:项目中的版本控制是通过Git实现的,而CI/CD工具如Jenkins或Travis CI则用于自动化测试和部署流程,这对于提高效率和保证质量非常关键。 10. **用户界面/用户体验设计**...
Goroutines是轻量级线程,而channels则可以安全地在goroutines之间传递数据,实现同步。 2. **垃圾回收**:Go内置了垃圾回收机制,自动管理内存,减轻了程序员的负担,同时避免了内存泄漏和悬挂指针的问题。 3. **...