`
qwe_rt
  • 浏览: 5233 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Java安全机制实现的不合理性

阅读更多
当谈到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方法。
这样做可以保证不影响其他,但是一个小小的需求却改动了两个地方,好像不是我们所情愿的。
============分割线=====================
我能想到的:对于现在安全机制的解决办法,是面向切面编程,这样灵活性就更大了。

分享到:
评论
10 楼 bushuang1983 2010-12-18  
checkLink等等这之类的方法是JDK1.0的产物,SecurityManager 中其他所有 check 方法的默认实现都是调用 SecurityManager.checkPermission 方法来确定调用线程是否具有执行所请求操作的权限,是为了提供向上的
兼容性.
现在的安全机制都是通过java.security.Permission以及它的子类来完成的。
9 楼 lffsonic 2010-12-14  
mercyblitz 写道
SecurityManager 提高一套模板实现,通过配置policy文件来控制。

底层的安全与应用级别的安全是两码事!


确实,应用级别安全需求千差万别,底层安全只是追求稳定可靠通用
8 楼 mercyblitz 2010-12-13  
SecurityManager 提高一套模板实现,通过配置policy文件来控制。

底层的安全与应用级别的安全是两码事!
7 楼 zuiyanwangyue 2010-12-13  
freish 写道
不是可以使用策略文件么?
grant codeBase "file:....." {
permission java.io.FilePermission "a.txt" "read"
}

楼上说的对,顶起!
6 楼 finallygo 2010-12-13  
面向切面的话,要使用动态代理来实现吧,这样性能好像有影响
5 楼 javabkb 2010-12-13  
yangyi 写道
这个是基础类库不是应用系统,不需要那么灵活。按照软件设计的理论,越是底层的,被依赖的越趋近于稳定。
这还不包括在性能,稳定性,可维护性等的权衡。
当然楼主说的也有道理

+
4 楼 freish 2010-12-12  
不是可以使用策略文件么?
grant codeBase "file:....." {
permission java.io.FilePermission "a.txt" "read"
}
3 楼 yangyi 2010-12-11  
这个是基础类库不是应用系统,不需要那么灵活。按照软件设计的理论,越是底层的,被依赖的越趋近于稳定。
这还不包括在性能,稳定性,可维护性等的权衡。
当然楼主说的也有道理
2 楼 qwe_rt 2010-12-11  
taolei0628 写道
权限这个东西就这么繁琐,不止是java的问题,它本身就是那样。
对应用来讲,是可以做到一定程度功能和权限分离的。
对底层服务来讲,检查权限通常就是程序的一部分。

JVM比loadLibrary还要底层些。
1 楼 taolei0628 2010-12-11  
权限这个东西就这么繁琐,不止是java的问题,它本身就是那样。
对应用来讲,是可以做到一定程度功能和权限分离的。
对底层服务来讲,检查权限通常就是程序的一部分。

相关推荐

    Java项目源码之家庭理财系统的实现(java+applet).zip

    家庭理财系统是一个基于Java和Applet技术实现的项目,旨在帮助用户管理家庭...家庭理财系统的实现旨在为用户提供方便、安全和高效的家庭财务管理服务,帮助用户实现理性消费和财务规划,提高家庭财务管理的效率和水平。

    java报修源码下载-OnlineExecutor:基于SpringBoot的在线JavaIDE

    类加载机制、Java 类文件结构、Java 反射等。除此之外,还涉及到了一个简单的并发问题:如何将一个非线程安全的类变为一个线程安全的类。因此,本项目较为适合在比较注重基础的面试中介绍给面试官,可以引出一些 ...

    RTC版本进行编程化身份认证和证书的处理

    2. **插件开发**:通过开发Eclipse插件,可以在RTC客户端中集成特定的认证机制。这可能涉及对Eclipse插件模型的深入理解和使用,以及与RTC服务的交互。 3. **证书管理**:RTC服务器可以通过Java密钥库(JKS)或PKCS...

    java_ssm专业书目推荐阅读管理毕业论文.docx

    * Hibernate 框架提供了一个基于 ORM 的数据持久化机制,用于将 Java 对象映射到数据库表中。 通过使用 SSM 框架,可以快速构建高性能的 Web 应用程序,提高开发效率和降低维护成本。同时,通过使用 Mysql 数据库,...

    java面试宝典

    - 多线程与并发:线程安全、同步机制、并发工具类如ExecutorService、Semaphore等。 - 输入/输出流:文件操作、网络通信、序列化等。 - 设计模式:工厂模式、单例模式、观察者模式等常见的设计模式。 - JVM内存模型...

    基于jsp的家庭财务管理系统源码数据库论文.doc

    5. **安全机制**:为了保护用户隐私,系统通常会包含用户登录验证、权限控制等安全措施,确保只有授权用户才能访问和修改财务数据。 通过这个家庭财务管理系统,用户可以方便地跟踪和管理家庭财务,提高理财效率,...

    JSP基于SSM家庭财务理财记账管理系统源码案例设计.zip

    系统的核心功能包括收支记录、账户管理、预算设定、报表统计等,旨在帮助用户清晰地掌握自己的财务状况,实现理性消费和科学理财。以下是该项目的主要知识点: 1. **JSP(JavaServer Pages)**:JSP是一种动态网页...

    云存储用户数据完整性保护与破坏的博弈分析

    用户通过租用云服务提供商的资源池,可以实现数据的在线存储,从而避免本地存储硬件投资和人员管理成本。专业云服务提供商提供的不仅仅是存储空间,还包括数据的高效管理技术和灾难性数据恢复功能,这为用户的信息...

    面试篇大全.docx

    - **Java泛型**:泛型是一种在编译时检查类型安全,并且所有的强制转换都是自动和隐式的机制。 - **Java集合**:Java集合框架主要包括Collection接口和Map接口两大类。 - **算法问题**:常见的排序算法(冒泡排序、...

    深入Spring简介与入门

    随着Spring的发布与推广,开发者们逐渐认识到轻量级框架的优势,从而开启了Java开发领域的“理性时代”。 ### Spring核心特性:IoC与AOP #### 控制反转(IoC) IoC是Spring框架的核心思想之一,通过依赖注入(DI...

    开题报告大学生个人管家APP 已通过开题答辩的.docx

    - **安全机制**: - **数据加密**:使用ECC和AES加密算法保护用户健康隐私数据。 - **权限管理**:通过角色权限划分,确保数据安全和个人信息安全。 #### 五、文献综述与参考案例 - **智能设备集成**:通过蓝牙与...

    中关村报价器(有了它自动查价格)

    对于普通消费者来说,它则是避免被高价坑害、实现理性消费的有力武器。中关村报价器在IT产品价格信息获取领域的价值和意义,不容忽视,它为用户带来的便利和效益,是其在市场中获得认可和推崇的根基所在。

    CivilDiscourse:公民话语 UWB-开源

    9. **版本控制与持续集成/持续部署(CI/CD)**:项目中的版本控制是通过Git实现的,而CI/CD工具如Jenkins或Travis CI则用于自动化测试和部署流程,这对于提高效率和保证质量非常关键。 10. **用户界面/用户体验设计**...

    hype

    Goroutines是轻量级线程,而channels则可以安全地在goroutines之间传递数据,实现同步。 2. **垃圾回收**:Go内置了垃圾回收机制,自动管理内存,减轻了程序员的负担,同时避免了内存泄漏和悬挂指针的问题。 3. **...

Global site tag (gtag.js) - Google Analytics