policy

Java安全技术
lPolicy安全 策略
l安全管理器
PDF 文件使用 "pdfFactory" 试用版本创建 www.fineprint.com.cn
Policy安全 策略
lJava在安全 策略文件中为程序指定权限
系统 策略: JDK_HOME/jre/lib/security/java. policy
grant {
permission java.util.PropertyPermission "java.version", "read";
permission java.util.PropertyPermission "java.vendor", "read";
permission java.util.PropertyPermission "java.vendor.url", "read";
permission java.util.PropertyPermission "java.class.version", "read";
permission java.util.PropertyPermission "os.name", "read";
permission java.util.PropertyPermission "os.version", "read";
...
};
PDF 文件使用 "pdfFactory" 试用版本创建 www.fineprint.com.cn
Policy安全 策略
lJava默认识别两种 策略:
系统 策略: JDK_HOME/jre/lib/security/java. policy
用户 策略: 存放于用户目录(系统属性user.home指定的目录)下的
java. policy文件.
l可以通过java.security. policy系统属性指定其它 策略
1.指定的 策略文件补充系统 策略和用户 策略
java -Djava.security. policy=mytest.policyAccessControlTest
2.指定的 策略文件代替系统 策略和用户 策略
java -Djava.security. policy==mytest.policyAccessControlTest
PDF 文件使用 "pdfFactory" 试用版本创建 www.fineprint.com.cn
Policy安全 策略
l缺省情况,小应用程序不能读本地系统的硬盘
参见FileOpeartionApplet.java,在这个 applet中对本地文件进行读
写,将抛出如下异常
java.security.AccessControlException: access denied (java.io.FilePermissionc:/in.txt read)
java.security.AccessControlException: access denied (java.io.FilePermissionc:/in.txt write)
运行appletviewer FileOperationApplet.html
PDF 文件使用 "pdfFactory" 试用版本创建 www.fineprint.com.cn
Policy安全 策略
l可以扩大 applet的安全范围
l增加FileOperation. policy 策略文件
grant{
permission java.io.FilePermission "C://in.txt","read";
permission java.io.FilePermission "C://in.txt","write";
};
再运行appletviewer -J-Djava.security. policy=FileOperation. policy
FileOperationApplet.html
PDF 文件使用 "pdfFactory" 试用版本创建 www.fineprint.com.cn
Policy安全 策略
思考:能否通过增加FileOperation. policy
策略文件使 applet在浏览器上运行时可以
访问本地系统的文件
PDF 文件使用 "pdfFactory" 试用版本创建 www.fineprint.com.cn
安全管理器
lSecurityManager提供了很多checkXxx()方法,用来判断程序是否具备某
种权限,如果不具备这种权限,将抛出SecurityException
l默认的SecurityManager根据 policy文件来判断程序是否具备某种权限
l当程序读文件时,Java类库中的输入流的read方法会先调用
SecurityManager的checkRead()方法
l当程序读文件时,Java类库中的输出流的write方法会先调用
SecurityManager的checkWrite()方法
PDF 文件使用 "pdfFactory" 试用版本创建 www.fineprint.com.cn
安全管理器
默认情况下,
l独立应用程序没有安全管理器
lapplet的安全管理器是sun. applet.AppletSecurity
参见SecurityManagerTest.java
分别将这个程序作为独立应用程序运行
JavaSecurityManagerTest
再作为 applet运行,看输出结果.
appletviewer SecurityManagerTest.html
PDF 文件使用 "pdfFactory" 试用版本创建 www.fineprint.com.cn
安全管理器
l可以为独立应用程序设定安全管理器
System.setSecurityManager( newSecurityManager());
l不能修改 applet的安全管理器
参见SecurityManagerTest.java
分别将这个程序作为独立应用程序运行
JavaSecurityManagerTest
再作为 applet运行,看输出结果.
appletviewer SecurityManagerTest.html
PDF 文件使用 "pdfFactory" 试用版本创建 www.fineprint.com.cn
编写自己的安全管理器
l可以编写自己的安全管理器,继承SecurityManager
l覆盖SecurityManager的有关checkXxx()方法
l参见MySecurityManager,在MySecurityManager中对文件的读写权限作
了限定,必须先输入正确的口令,才能读写文件.
PDF 文件使用 "pdfFactory" 试用版本创建 www.fineprint.com.cn
MySecurityManager
public voidcheckRead(String filename)
{
if (!VerifyPassword())
throw newSecurityException("Dontread!");
else
System.out.println("checkRead(String filename)");
}
public voidcheckWrite(String filename)
{
if (!VerifyPassword())
throw newSecurityException("Dontwrite!");
else
System.out.println("checkWrite(String filename)");
}
PDF 文件使用 "pdfFactory" 试用版本创建 www.fineprint.com.cn
SecurityTest
1.如果将SecurityTest的安全管理器设为SecurityManager, 运行该程
序,将抛出java.security.AccessControlException
2.如果将SecurityTest的安全管理器设为MySecurityManager, 运行该
程序,只有输入正确的口令,才会正常运行.
思考:在第一种情况下,如何使SecurityTest具有对 文件读写权限
PDF 文件使用 "pdfFactory" 试用版本创建 www.fineprint.com.cn
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值