问题标签 [java-security-manager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
119 浏览

java - 在不允许 getEnv 调用的受保护环境中创建 AmazonHttpClient

从AWS SDK版本 1.11.700 切换到 1.11.908我们的库之一现在无法在受保护的环境中工作。更具体地说,新的 SDK 版本已更改ClientConfiguration,因此它现在通过检查环境变量来实例化 RetryPolicy。

不幸的是,我们将把这个库部署到一个禁止(SecurityManager in place)访问环境变量的环境中。这意味着我们所有依赖于AmazonHttpClient的代码不再可用,因为:

  • 为了实例化AmazonHttpClient你必须传入一个有效的ClientConfiguration(不接受空值)
  • 为了创建一个有效的ClientConfiguration,你需要能够读取 env vars

这是堆栈跟踪:

我们提出的所有选项都不适用于这种情况:

  • 子类ClientConfiguration化以抑制异常:无法尝试捕获对 super() 构造函数的调用
  • ClientConfiguration是一个类,因此我们没有要实现的接口
  • java.policy无法修改以允许访问该属性:环境不在我们的控制范围内
  • 异常是从而不是从引发的,因此它甚至与单个对象无关......
0 投票
0 回答
153 浏览

java - 如何设置 java 安全策略文件以仅在通过 gradle 执行 JUnit 测试时避免 System.exit 调用?

我想通过 gradle 执行 JUnit 测试,我想避免在这些测试中调用 System.exit() 调用。我读过设置安全策略文件可以解决问题。

这是我正在使用的安全策略文件

我在 gradle 构建文件中设置 seecurity.policy 和安全管理器属性,如下所示:

但是当我运行测试时,测试任务失败并出现以下堆栈跟踪:

看起来安全管理器正在阻止对 JMockit 等代理的其他权限。除了 System.exit() 调用之外,我需要像往常一样将所有其他权限应用于代码库。

我怎样才能做到这一点?我错过了什么吗?

0 投票
1 回答
1485 浏览

java - java.security.properties - 未应用更改

我尝试将安全属性附加到 java.security。因此,我添加了一个属性“java.security.properties”,指定要附加的文件。

我检查了 security.overridePropertiesFile 是否设置为 true。

由于某种原因,未应用对安全策略的更改。如果我直接更改文件“java.security”,一切正常。

找不到文件或文件内容不正确。我没有收到有关该位置的任何错误消息。我尝试了绝对的相对路径。该文件的内容如下(一行):

jdk.tls.disabledAlgorithms=ECDH, DH, RC4, DES, MD5withRSA, 3DES_EDE_CBC, DESede, DES, anon, NULL

我猜路径有问题,但不知道,因为没有关于它的日志。虽然找不到关于路径的好信息。所有示例都是相对路径,对我也不起作用。

我正在使用JDK11。

0 投票
0 回答
34 浏览

java - 在没有 SecurityManager 的情况下防止反射

我正在一个环境中制作一个java程序,该程序从“加载目录”中的文件加载代码。这个环境在它已经设置了一个不可替换的SecurityManager. 我试图隐藏SecretKey任何恶意代码,这些代码也可以以与我相同的方式加载。在没有安全管理器的情况下隐藏一个字段以防止反射似乎非常困难,如果不是不可能的话。该代码的目的是保护最终用户免受放在“加载目录”中的任何恶意代码的侵害。

这是我的代码:

其中 Utils.getCallerClassName() 是:

加载的SecurityManager只是阻止 System.exit() 并替换它。

有什么方法可以保护关键字段不被反射?如果没有,我应该怎么做才能保证这些数据的安全?

0 投票
0 回答
82 浏览

java - 如何在 kotlin 协程中获得特权?

在 Java 中,我可以通过调用 java.security.AccessController.doPrivileged() 来提高权限。

如何提高 kotlin 协程的权限?

示例:当我调用程序时

java.policy在java -Djava.security.manager -Djava.security.policy=java.policy Privileged哪里

我明白了

什么是 AccessController.doPrivileged() 的等价物,用于以提升的权限调用 checkSuspend(参见程序代码中的 FIXME)?

0 投票
1 回答
270 浏览

java - 出现此错误 - 不支持受公钥保护的 PKCS12

我正在尝试在 scala 应用程序中使用 java.security.Keystore

下面是我的代码的样子 -

但是当我在我的 mac 上发布这个特定的包并尝试在不同的服务中使用它时,我得到了这个特定的错误 -

如果我在 mac 机器上发布包,通常会发生此错误,但是当我在 Windows 机器上发布相同的包时,它工作得很好。

您认为这可能是 Mac 特有的吗?

0 投票
1 回答
16 浏览

java-ee-8 - CustomAuthenticationMechanism 调用 identityStoreHandler.validate 后没有获取 callerGroups

我正在尝试创建自定义身份验证。当我制作了一个简单的 identityStore 时,它​​使用角色 AF_ADMIN 和 AF_USER 将每个用户验证为访客。

登录时调用 CustomAuthenticationMechanism,但来自 idStoreHandler 的 CredentialValidationResult 没有调用者组。所以 Login-public.xhtml 说我没有 AF_ADMIN 角色。

我错过了什么吗?

自定义身份验证机制

登录-public.xhtml

登录-private.xhtml

MyLoginIdentityStory

web.xml

0 投票
0 回答
156 浏览

java - java编程中的漏洞是什么?

我只是想了解编程中的漏洞是什么意思,我进行了搜索,一些网络结果显示它与低级安全性有关。

我读了这个来理解,但我无法理解这个 链接

我在网上找到了这个

java中的主要漏洞是它违反了安全规则。在java中,我们可以很容易地访问类外任何类的私有数据成员。

谁能用程序解释这个漏洞。我很混乱。

0 投票
0 回答
57 浏览

java - 从代码库加载 RMI 类而不推荐使用 SecurityManager?

我正在使用 RMI 调用指定为返回 class 对象的方法ClassX

如果远程方法实际上返回本地未知子类的实例SubclassOfXClassX则该类SubclassOfX会自动从 a 下载codebase(由 的序列化实例上的注释指定SubclassOfX)。
(对于那些需要它的人:RMI 中的代码库概念

在 Java17 之前,必须使用 SecurityManager(和策略文件)来允许从代码库加载类。但从 Java17 开始,不推荐使用 SecurityManager 并标记为删除

我现在的问题是:将来如何允许/控制从代码库加载类?

Edit1 : 并且只是回答引用 jep411 的评论:我知道这个文档,但是对于 SecurityManager 的这个 RMI 用例,它没有给出解决方案/替代方案。

0 投票
0 回答
19 浏览

java - AccessController.doPrivileged 用法

我试图了解如何正确使用 AccessController.doPrivileged()。

我有:

  • 名为 store.pwd 的密码文件

  • 一个名为 policy.policy 的策略文件

我已经实现了 2 个线程:

  1. 第一个:
  • 设置策略文件System.setProperty("java.security.policy", "policy.policy");
  • 安装默认安全管理器 System.setSecurityManager(new SecurityManager());
  • store.pwd读取行
  • 允许操作
  1. 第二个:
  • 安装默认安全管理器 System.setSecurityManager(new SecurityManager());
  • store.pwd读取行
  • 不允许操作
  1. 如果从 Thread1 我调用 Thread2:
  • 允许操作

如果每次我从授权代码中调用未授权代码,未授权代码都会继承调用者保护域的权限并且操作成功,这种情况下是否需要使用 doPrivileged

从文档中:

公共静态 T doPrivileged(PrivilegedAction 动作)

在启用权限的情况下执行指定的 PrivilegedAction。使用调用者的保护域拥有的所有权限执行该操作。

但是从上面显示的测试来看,这个操作似乎是自动的,所以下次,在这种情况下是否有必要使用 doPrivileged

提前致谢。