java的安全管理器_线程上的Java安全管理器

如果我理解正确,这听起来像您要限制正在使用的第三方库之一对文件系统的访问.就Java SecurityManager而言,此特定的第三方库在单独的线程中运行这一事实无关紧要:Java安全策略根据加载代码的位置,是否经过签名或所使用的用户来授予权限.运行代码,但不是基于代码在哪个线程中运行.

为了将特定库的访问限制在文件系统的某些区域,您需要一个策略文件,该策略文件为所有其他代码授予必要的权限,并为要限制的库提供有限的权限.假设您正在运行的代码位于一组单独的jar文件中,并且您不想对任何其他代码施加任何限制,则策略文件将如下所示:

grant codebase "file:/path/to/your-application.jar" {

permission java.security.AllPermission;

};

grant codebase "file:/path/to/trusted-library.jar" {

permission java.security.AllPermission;

};

grant codebase "file:/path/to/another-trusted-library.jar" {

permission java.security.AllPermission;

};

grant codebase "file:/path/to/restricted-library.jar" {

permission java.io.FilePermission "/path/to/particular/directory", "read,write";

// Any additional permissions this library needs

};

可能需要经过反复试验才能发现您需要向受限库授予哪些其他特定权限才能使其正常运行.

如果您的要求确实是限制对特定线程的访问,则需要编写一个自定义SecurityManager并重写checkPermission方法,以便它们检查哪个线程正在调用该方法,以确定是否应授予该权限.您需要将方法添加到自定义SecurityManager中,以允许您的应用程序代码注册应限制哪些线程,并且需要确保受限制的代码无法调用这些其他方法,例如,通过创建和检查自定义权限.

编写自定义SecurityManager的风险通常比使用标准SecurityManager的风险大,因此,如果采用这种方法,则需要进行一些仔细的测试.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值