您的位置:首页 > 编程语言 > Java开发

Java 安全管理器--SecurityManager

2014-11-17 20:14 169 查看
安全管理器是一个允许应用程序实现安全策略的类。它允许应用程序在执行一个可能不安全或敏感的操作前确定该操作是什么,以及是否是在允许执行该操作的安全上下文中执行它。应用程序可以允许或不允许该操作。

SecurityManager
类包含了很多名称以单词
check
开头的方法。Java 库中的各种方法在执行某些潜在的敏感操作前可以调用这些方法。对
checkXXX
方法的典型调用如下:

SecurityManager security = System.getSecurityManager();
if (security != null) { security.checkXXX(argument,  . . . ); }


安全管理器通过抛出异常来提供阻止操作完成的机会。如果允许执行该操作,则安全管理器例程只是简单地返回,但如果不允许执行该操作,则抛出一个
SecurityException
。该约定的唯一例外是
checkTopLevelWindow
,它返回
boolean
值。

获取和设置当前的安全管理器是由
System
类中的
getSecurityManager
setSecurityManager
方法处理的。

特殊方法
checkPermission(java.security.Permission)
确定是应该允许还是拒绝由指定权限所指示的访问请求。默认的实现调用AccessController.checkPermission(perm);如果允许访问请求,则安静地返回
checkPermission
。如果拒绝访问请求,则抛出
SecurityException
。从
Java 2 SDK v1.2 开始,
SecurityManager
中其他所有
check
方法的默认实现都是调用
SecurityManager.checkPermission
方法来确定调用线程是否具有执行所请求操作的权限。



创建安全管理器步骤:

(1)
创建一个SecurityManager的子类;

(2)
覆盖或创建一些方法。

创建安全管理器

public class PasswordSecurityManager extends SecurityManager{

private String password;

PasswordSecurityManager(String password) {

super();

this.password = password;

}

public boolean accessOK(String password) {

if(this.password.equals(password)) return true;

else return false;

}

}

利用安全管理器

public static void main(String args[]){

PasswordSecurityManager manager = new PasswordSecurityManager("123456");

if(!manager.accessOK(args[0])) return;

......

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: