`
vipshichg
  • 浏览: 266686 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

打开Java中的SecurityManager

    博客分类:
  • java
阅读更多

SecurityManager在Java中被用来检查应用程序是否能访问一些有限的资源,例如文件、套接字(socket)等等。它可以用在那些具有高安全性要求的应用程序中。通过打开这个功能, 我们的系统资源可以只允许进行安全的操作。

当Java虚拟机启动时,它首先通过检查系统属性java.security.manager来确定SecurityManager是否打开了。如果打开了,那么SecurityManager实例将被创建,它可以被用来检查不同的权限。默认情况下,SecurityManager是关闭的,但是这里有一些方法可以打开SecurityManager。

1. 指定 -Djava.security.manager

当我们运行一个程序,我们可以指定JVM命令 -Djava.security.manager 使SecurityManager运行。

1
java -Djava.security.manager <class_name>

这是打开SecurityManager最常见的方式。java.security.manager是一个系统属性,您可以使用System.getProperty(“java.security.manager”)检查该系统属性是否被设置。

在 这里,你可能会认为,我们可以使用System.setProperty(“java.security.manager”)打开 SecurityManager,但是并不能这么设置。因为先前我们提到,这个系统属性是在当JVM启动时进行检查的。如果我们用程序手动设置该属性,并 不能奏效,因为JVM已经启动了,已经过了检查系统属性的步骤了。

2. 通过程序打开SecurityManager

现在,如果我们真的想通过我们的程序打开SecurityManager,我们也能做到。 System类中有一个叫 setSecurityManager() 的方法可以做到这一点。这个方法的参数是一个SecurityManager实例。

1
2
SecurityManager sm=new SecurityManager();
System.setSecurityManager(sm);

通过这个,我们可以打开SecurityManager.。如果之后我们想要关闭SecurityManager, 我们该怎么做? 下面的代码能做到吗?

1
2
3
4
SecurityManager sm=System.getSecurityManager();
if(sm!=null){
    System.setSecurityManager(null);
}

上面的代码只有你在位于${JAVA_HOME}/lib/security目录下或者其他指定目录下的java.policy文件中指定了一个权限才会奏效。 这个权限是:

1
permission java.lang.RuntimePermission "setSecurityManager";

上面的一行将被用来允许代码设置SecurityManager

3. 在build文件中

我们想打开SecurityManager,如果我们使用Ant构建应用程序时, 我们可以加上

1
<sysproperty key="java.security.manager" value="" />

我们通过Ant创建单元测试的时候非常有用。

7
5
分享到:
评论
1 楼 LinApex 2014-03-05  
有什么作用

相关推荐

    SecurityManager使用

    在Java编程语言中,`SecurityManager`(安全管理器)是一个重要的安全组件,它允许开发者对应用程序的安全性进行精细控制。`SecurityManager`是Java虚拟机(JVM)的一部分,用于实施一套安全策略,以防止代码执行...

    java 权限实例代码

    在Java中,安全管理器(SecurityManager)是控制权限的核心组件。如果一个应用程序设置了安全管理器,那么所有可能引起安全问题的操作都会被检查,看是否拥有执行该操作的相应权限。如果没有,将会抛出...

    securesm:解决Java中设计缺陷的SecurityManager实现

    当`SecurityManager`存在时,每次进行敏感操作(如打开网络连接、读写文件或执行系统命令)前,Java虚拟机(JVM)都会调用`checkPermission`方法来验证是否有执行该操作的权限。如果权限不足,`SecurityManager`将抛...

    您的安全设置已阻止应用程序使用已过期的java.doc

    Java 安全设置的工作原理可以分为两个阶段:第一阶段是 ClassLoader 将类加载到内存中,第二阶段是 SecurityManager 检查类的权限。ClassLoader 负责将类加载到内存中,而 SecurityManager 负责检查类的权限,确保类...

    java写的网络浏览器

    此外,`java.net.URL`类可以用于打开和读取URL资源,而`java.io`和`java.nio`则用于数据的读写操作。 4. **JavaScript引擎**:为了执行网页中的JavaScript代码,Java浏览器需要一个JavaScript引擎。Java可以使用如...

    Java实习报告.pdf

    URLConnection是Java中用于打开与URL所指向资源进行连接的类。通过使用URLConnection,开发者可以发送请求并接收响应,甚至可以获取URL指向资源的头信息。API(应用程序接口)则是一种规范,它定义了访问某些数据或...

    Java锁屏软件 系统锁

    在Java中,可以通过安全管理器(SecurityManager)来实施细粒度的权限控制,限制程序对某些系统资源的访问,防止被恶意绕过。 5. **用户界面设计**: 锁屏软件通常包含用户登录界面,用户需要输入正确的密码才能解锁...

    JAVA 2平台安全技术

    3. java.lang.SecurityManager:这个类是安全管理器的实现,可以通过setSecurityManager方法设置。它监控并控制应用程序的行为,执行权限检查。 三、实现 1. 权限控制:在Java中,权限是由Permission对象表示的,...

    applet提升权限demo

    4. **修改Applet代码**:在Applet的`init()`或`start()`方法中,使用`SecurityManager`和`Policy`类检查当前的权限。如果发现需要的权限未被授予,可以提示用户接受更高级别的权限。 5. **用户交互**:在浏览器中...

    tomcat7.0学习笔记

    使用vi编辑器打开/etc/profile文件,在文件末尾添加以下行来设置JAVA_HOME、JRE_HOME、PATH和CLASSPATH: ``` export JAVA_HOME=/opt/jdk1.6.0_25 export JRE_HOME=$JAVA_HOME/jre export PATH=$JAVA_HOME/bin:...

    Android加载SO库分析.

    #### 一、Java中调用`System.loadLibrary();` 在Android应用开发中,经常需要调用本地代码(通常是C或C++编写)来实现某些功能,比如高性能计算、硬件访问等。为了实现这一点,开发者通常会使用`System.loadLibrary...

    Halt:应用程序访问和安全库

    1. **安全管理器(SecurityManager)**:这是Java安全模型的中心组件,它可以控制程序的某些敏感操作,比如读写文件、打开网络连接、访问系统属性等。当一个应用程序试图执行被限制的操作时,安全管理器会进行检查,...

    Spring Boot整合Shiro搭建权限管理系统教学提纲.docx

    - 打开浏览器,访问 `http://localhost:8080/hello`,如果一切正常,应该能看到 “Hello, Spring Boot!” 的输出。 #### 二、Spring Security 替代方案:Shiro 在 Spring Boot 中,除了使用官方推荐的 Spring ...

    将_Shiro_作为应用的权限基础_五:SpringMVC+Apache_Shiro+JPA(hibernate)整合配置

    - **OpenEntityManagerInViewFilter**:此过滤器使得`EntityManager`能够在视图渲染过程中保持打开状态。这是Spring针对Hibernate的非JPA实现使用的`OpenSessionInViewFilter`的JPA版本。 #### 2. ...

    深入浅出学shiro

    Apache Shiro 是一款强大的安全性框架,它简洁且易于集成到各种Java应用程序中,无论是传统的Java SE环境还是现代的Java EE环境。Shiro可以提供认证、授权、加密和会话管理等功能,使开发者能够轻松地处理常见的安全...

    shiro并发人数登录控制的实现代码

    &lt;property name="securityManager" ref="securityManager"/&gt; /login = authc /logout = logout /authenticated = authc /** = kickout,user,sysUser ``` 这样配置后,除了登录和登出...

Global site tag (gtag.js) - Google Analytics