public final class SecurityPermission

此类用于安全权限。SecurityPermission 包含一个名称(也称为“目标名称”),但没有操作列表;可以使用,也可以不使用指定权限。

目标名称就是安全配置参数的名称(见下表)。目前 SecurityPermission 对象可用来保护对 Policy、Security、Provider、Signer 和 Identity 对象的访问。

下表列出了所有可能的 SecurityPermission 目标名称,并提供了权限所允许的操作的简要说明,还讨论了授予代码该权限的风险。

权限目标名称

权限所允许的操作

允许此权限所带来的风险

createAccessControlContext

创建 AccessControlContext

这允许攻击者使用 DomainCombiner 实例化 AccessControlContext。由于为 DomainCombiner 提供了到当前堆栈上的 ProtectionDomains 的引用,所以如果 DomainCombiner 是恶意的,则这样可能会导致隐私泄漏。

getDomainCombiner

获取 AccessControlContext 的 DomainCombiner

这样将允许获取 AccessControlContext 的 DomainCombiner。由于 DomainCombiners 可以包含敏感信息,所以这可能会潜在地导致隐私泄漏。

getPolicy

获取系统级安全策略(具体来说,就是获取当前安装的 Policy 对象)

这将允许通过 getPermissions 调用来查询策略,这样将泄漏授予指定 CodeSource 的权限。虽然暴露策略并不足以危及系统安全,但它确实为恶意代码提供了更多信息,恶意代码可能会使用这些信息更好地锁定攻击目标。明智之举就是不泄漏不必要的信息。

setPolicy

设置系统级安全策略(具体来说,就是设置 Policy 对象)

授予此权限相当危险,因为恶意代码会授予自身成功攻击系统所需的所有必要权限。

createPolicy.{policy type}

从提供者获取 Policy 实现的实例

授予此权限将允许代码获取 Policy 对象。恶意代码可以查询该 Policy 对象,以确定除其自身以外授予了代码哪些权限。

getProperty.{key}

使用指定的密钥获取安全属性

根据已经授予其访问权的特定密钥,代码可以访问安全提供者列表,以及系统级位置和用户安全策略。虽然泄漏此信息并不足以危及系统安全性,但它确实为恶意代码提供了更多信息,恶意代码可能会使用这些信息更好地锁定攻击目标。

setProperty.{key}

使用指定的密钥设置安全属性

这包括设置安全提供者或定义系统级安全策略的位置。有权设置新的安全提供者的恶意代码会设置一个恶意提供者,以盗取诸如加密的私钥之类的保密信息。此外,有权设置系统级安全策略的恶意代码还会将此恶意提供者指向安全策略,授予攻击者成功攻击系统所需的全部必要权限。

insertProvider.{provider name}

使用指定的名称添加一个新的提供者

这会使用户把可能的恶意提供者(例如,泄漏传递给它的私钥的提供者)当作最高优先级的提供者引入。之所以出现这种情况,是因为 Security 对象(它管理已安装的提供者)目前在接触该提供者之前不检查其完整性和真实性。

removeProvider.{provider name}

移除指定的提供者

这可能会更改程序的行为或禁止执行程序的其他部分。如果程序以后请求提供者时该提供者已被移除,则可能导致执行失败。另外,如果程序的其他部分未明确请求已移除的提供者,但是当请求加密服务时通常会选择这一提供者(原因在于其在提供者列表中的位置靠前),这时将另外选择提供者,或者找不到合适的提供者,因而会导致程序失败。

setSystemScope

设置系统标识范围

这会允许攻击者使用不受信任的证书来配置系统标识范围,并因此授权使用这些证书签名的 applet 或应用程序代码享有被系统的原始标识范围所拒绝的特权

setIdentityPublicKey

设置标识的公钥

如果标识被标记为 "trusted"(受信任),这将允许攻击者引入其他不受系统标识范围信任的公钥(例如,它自己的公钥),因此,将授权使用该公钥签名的 applet 或应用程序代码享有在其他情况下将遭受拒绝的特权。

setIdentityInfo

设置标识的常规信息字符串

这将允许攻击者设置对标识的常规信息描述。这会欺骗应用程序使用其他标识而不是本打算使用的标识,或者会阻止应用程序查找特定的标识。

addIdentityCertificate

添加标识证书

这允许攻击者为标识的公钥设置证书。这样将非常危险,因为这会影响整个系统的信任关系。与先前相比,此公钥的受信任范围突然变大。

removeIdentityCertificate

移除标识证书

这允许攻击者移除标识的公钥证书。这样将非常危险,因为这会影响整个系统的信任关系。与先前相比,此公钥的受信任范围突然变得不如以前。

printIdentity

查看主体名称和可选的使用范围,以及在该范围内是否认为它是“受信任”的

输出范围可以是文件名称,在这种情况下它可以传达本机系统信息。例如,此处是一个输出名为 "carol" 标识的示例,在用户的标识数据库中,它被标记为不受信任:

carol[/home/luehe/identitydb.obj][not trusted]

clearProviderProperties.{provider name}

“清除”一个提供者,以使其不再包含用来搜索由提供者实现的服务的属性

这将禁用由该提供者实现的服务搜索。因此,正如 "removeProvider.{provider name}" 权限中所描述的那样,这可能会更改正常利用该提供者的程序的行为或禁止程序的其他部分的执行。

putProviderProperty.{provider name}

设置指定提供者的属性

每种提供者属性都要指定由该提供者实现的特定服务的名称和位置。通过授予此权限,可以让代码将服务规范替换为另外一种,并据此指定另外一种实现。

removeProviderProperty.{provider name}

从指定的提供者移除属性

这将禁用由该提供者实现的服务搜索。由于移除了指定提供者名称和位置的属性,所以无法再访问这些提供者。正如 "removeProvider.{provider name}" 权限中所描述的那样,这可能会更改正常利用该提供者的程序行为或禁止程序其他部分的执行。

getSignerPrivateKey

获取 Signer 的私钥

允许访问私钥是非常危险的;一般认为密钥是用来保守秘密的。否则,代码会使用私钥签署各种文件并声称签名来自 Signer。

setSignerKeyPair

设置 Signer 的密钥对(公钥和私钥)

这将允许攻击者把其他人的(“目标的”)密钥对替换为可能更弱的密钥对(例如,更小密钥大小的密钥对)。这还会允许攻击者侦听目标与其同位体之间加密的通信。目标的同位体可以用目标的“新”公钥包装加密的会话密钥,这将允许攻击者(拥有对应私钥)打开该会话密钥并解密使用该会话密钥加密的通信数据。

构造方法摘要

方法摘要

构造方法详细信息

SecurityPermission

public SecurityPermission(String name)

创建具有指定名称的新 SecurityPermission。此名称是 SecurityPermission 的符号名称。名称的末尾可能有一个星号,星号前有一个 "."(也可能没有),用来表示通配符。

参数:

name - SecurityPermission 的名称

抛出:

SecurityPermission

public SecurityPermission(String name,

String actions)

创建具有指定名称的新 SecurityPermission 对象。此名称是 SecurityPermission 的符号名,且目前不使用操作 String,其应该为 null。

参数:

name - SecurityPermission 的名称

actions - 其应该为 null。

抛出:

java安全权限_java.security.SecurityPermission相关推荐

  1. java 方法权限_Java控制访问权限的方法

    这篇博客主要用来介绍Java中的访问权限. 引入访问控制权限 我们都知道,一个通用类库(如:JDK)开发出来的目的是让普通开发者重用以节省开发时间与精力,但是类库的设计不可能在刚开始就尽善尽美,普通开 ...

  2. java获取密钥长度_java.security.InvalidKeyException:解密期间密钥大小错误

    在解密期间,我得到的是"错误的密钥大小"或"给定的最终块未正确填充" ,这取决于我正在运行的操作系统. 在Win7上,使用IBMJCE或SUNJCE(两者都是J ...

  3. java 包权限_Java基础(十二)之包和权限访问

    软件包 软件包解决了两个类名字一样的问题.软件包就是一个"文件夹". 包名的命名规范: 1.要求所有字母都小写: 2.包名一般情况下,是你的域名倒过来写.比如baidu.com,p ...

  4. java实现权限_Java实现常用权限控制算法

    一种常用的权限控制算法的实现,参考LINUX/UNIX权限编码 这里笔者介绍一种很常用,也比较专业的权限控制思路. 要换成其他的语言主,自己转一下就可以了. 这里用java语言描述,其实都差不多的. ...

  5. java 对象加密_java.security包实现对象加密

    Java原生支持常见的加密算法,例如DES.RSA.随便写点关于Java安全包的东西. Java.security.Provider对象官方的解释是:实现了 Java 安全性的一部分或者全部. pro ...

  6. java实现权限_Java实现权限管理的两种方式

    编辑特别推荐: 种方式:利用filter.xml文件和用户信息表配合使用来实现权限管理. 1.过滤器filter package cn.com.aaa.bbb.filter; import java. ...

  7. java 安卓权限_java – Android运行时权限 – 如何实现

    Android Developer Documentation给出了在运行时请求权限的示例: // Here, thisActivity is the current activity if (Con ...

  8. java 数据 权限_Java如何利用Mybatis进行数据权限控制详解

    前言 权限控制主要分为两块,认证(Authentication)与授权(Authorization).认证之后确认了身份正确,业务系统就会进行授权,现在业界比较流行的模型就是RBAC(Role-Bas ...

  9. java 注解 权限_java 使用注解 处理权限(springboot)

    1.前端登陆,将用户信息传到后台 2.后台验证账号密码,如果账号密码信息正确,将登陆的用户信息保存到session中 3.自定义注解  注解名为 CheckLogin @Target({Element ...

最新文章

  1. 原来JScript中的关键字'var'还是有文章的
  2. TableView/CollectionView 滑动顶部效果优化
  3. silverlight 客户端之间的通讯
  4. 数据库的数据在硬盘上吗
  5. 学习笔记(九)——JSON 和 AJAX
  6. Facebook上的一道题,超过50万的评论和1万3500次分享
  7. C++实现具有[数组]相似特征的类DoubleSubscriptArray
  8. 【CodeForces - 1027C】Minimum Value Rectangle (数学,公式化简,思维,卡常卡memset)
  9. Maven详解及实例
  10. php二分查找法实例
  11. 【C++】图书管理系统(含全部源代码)
  12. Java优秀员工自我评价_优秀员工自我评价
  13. 基于MIPS指令集的单周期处理器设计
  14. 时间转换 Wed Sep 16 2020 00:00:00 GMT+0800 (中国标准时间)
  15. 为什么要做小程序?90%的商家不知道的好处!
  16. c语言void要用什么头文件,什么是C语言头文件?
  17. 企业应如何运用ERP系统的BOM表?
  18. 脑电波-使用意念说话
  19. Leetcode 1079:活字印刷
  20. excel办公自动化工具

热门文章

  1. 工业轨式 1-16路 4-20MA 模拟量光端机产品介绍
  2. 【渝粤教育】电大中专电商运营实操 (1)作业 题库
  3. 【渝粤题库】国家开放大学2021春1334纳税筹划题目
  4. matlab怎么提取特征,matlab – 了解提取特征的编码
  5. 计算机发送到桌面快捷方式,windows7添加到桌面快捷方式无故消失!
  6. 【数字信号处理】复数的另一种思考之平均风向测量(Python实现)
  7. MATLAB库函数unwrap(相位解卷绕)的C语言实现
  8. linux18.2安装界面,Ubuntu 18.10下安装Grub Customizer 5.1.0配置grub2图形化界面
  9. 华硕台式机安装linux进不去系统,[已解决]求助,无法进入系统
  10. php baocuo error,PHP编译报错configure: error: Cannot find libmysqlclient under /usr.