问题标签 [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 回答
312 浏览

security - JRuby 的 Java 安全管理器

我允许用户提供的 ruby​​ 代码在服务器(java 脚本)中运行,并且由于 jruby 不支持 ruby​​ 中的安全级别,因此我正在考虑使用 java 的安全管理器。

这是一个好的决定吗?有没有其他人实施过这个?是否有任何好的文章/书籍/资源可以将我介绍给安全经理?

0 投票
1 回答
1191 浏览

java - JVM - Java 虚拟机损坏

如何检查和检测损坏的 JVM?如何检查安全管理器、字节码验证器和类加载器是否正常工作?

0 投票
2 回答
1549 浏览

java - Java 安全管理器 checkExec

我在尝试在 Java 安全管理器中实施安全检查时遇到问题。

我似乎误解了安全管理器中 checkExec() 方法的用途。我认为当我的应用程序尝试通过命令行调用另一个 Java 应用程序时它会被调用,但这似乎并没有发生。

这就是我想要发生的事情:使用我的自定义安全管理器的调用应用程序在命令行上执行“java SomeApp”。安全管理器检查这是否正常并执行适当的操作。

为了做到这一点,我做了以下事情:

  1. 创建了一个覆盖该checkExec方法的自定义安全管理器。方法签名是public void checkExec(String cmd).

  2. 创建了一个测试类,SecurityTest。

  3. SecurityTest 将我的自定义安全管理器指定为其安全管理器。

  4. SecurityTest 然后java InvokeMe在命令行上运行。

  5. 自定义安全管理器拦截了这一点并做一些事情。

1 到 4 很好,但 5 永远不会发生。我已验证我的自定义安全管理器有效,它已成功分配给 SecurityTest,并且 SecurityTest 成功运行了 InvokeMe。但是,据我所知,我的自定义安全管理器中的 checkExec() 方法永远不会被调用。

我哪里错了?我正在尝试做的事情(让安全管理器在应用程序调用时做某事java SomeApp)甚至可能吗?

感谢您的时间。

编辑:

这是运行测试产生的一些代码和输出。这是快速原型风格,“先把它搞定,以后再清理”风格的代码,所以它不会很漂亮:

自定义安全管理器:

安全测试:

调用我:

测试输出:

没有迹象表明 checkExec() 被调用——没有控制台输出,并且 Verification.txt 在我的文件系统上的任何地方都不存在。(当然,我不确定在执行此类操作时安全管理器子类的行为应该是什么——所以这可能是正常的。如果是这种情况,我需要另一种快速而简单的方法来测试我是否'我打了某些代码行。) InvokeMeWasCalled.txt 确实存在,所以这部分肯定是有效的。

0 投票
1 回答
1654 浏览

java - 如何“隐藏”敏感的系统属性,如 Java 应用程序设置的密码?

我正在维护一个现有的 Java 产品(它有一个巨大的代码库)。我发现它在不少于 4-5 个不同的地方(方法)设置(和获取)两个内部密码作为 Java 系统属性。现在,问题是,密码以纯文本形式存储在 Java 系统属性中,因此对于外部实体也是可见的,因为应用程序没有使用任何 Java 安全管理器。例如,如果应用程序(进程)在端口号 1234 上运行,我们可以运行 Java 命令:

将这两个密码视为相应 Java 系统属性的值。我想问一下,在不过多更改现有代码库的情况下是否有任何补救措施?期望的效果是对所有外部实体“隐藏”两个 Java 系统属性(表示两个密码)。

需要注意的是,在应用程序中引入 Java 安全管理器可能不是一个解决方案,如果我们使用 Java 安全管理器撤销这两个 Java 系统属性的读取权限,读取这些属性的应用程序代码就会崩溃。同样适用于以加密形式存储密码,因为这会使应用程序中所有希望以明文形式读取密码的代码崩溃。

0 投票
0 回答
713 浏览

permissions - 配置 WebLogic 和 Java 安全管理器

我正在尝试配置Java Security Manager以保护 WebLogic 资源,但是当我启动 WL 时,出现错误:

AccessControlException: 拒绝访问

我的 weblogic.policy 包括:

+ 所有,我通过使用打印安全管理器获得。我做错了什么?

0 投票
0 回答
1155 浏览

java - 在 Java 中访问我的 jks 密钥库时出现问题

我正在尝试从我的本地计算机测试 HTTPS SSL 连接,因为我在我的服务器中实现相同的问题时遇到了一些问题。

我遵循的步骤

  1. 我从浏览器下载了第三方 HTTPS 服务器 SSL 证书(DER 格式),我看到它是由 Comodo RSA 颁发的

  2. 我尝试使用命令提示符中的命令将密钥作为 .jks 导入,但失败并出现错误“找不到证书.jks 文件”/ keytool -importcert -alias testCert -file c:\desktop\testCert.cer -keystore “C:\Program Files\Java\jre1.6.0\lib\security\certificate.jks”-storepass changeit

  3. 所以我用谷歌搜索并使用命令创建了密钥库

    keytool -genkey -alias mykey -keystore "C:\Program Files\Java\jre1.6.0\lib\security\certificate.jks"

  4. 现在我执行了相同的命令(步骤 2),它运行成功。我什至可以列出并查看 certificate.jks 文件中的证书。

  5. 但是,当我尝试访问我的 java 程序中的 certificate.jks 作为密钥库时,它会失败并出现错误“找不到文件 - certificate.jks”。

    /li>

请澄清我在这里做错了什么。

另外,我尽量不使用 cacerts,因为它会在我的服务器中自动刷新。而且我相信如果我创建自己的.jks,它不会被引用。请帮忙。

谢谢

0 投票
1 回答
1079 浏览

java - 在 JBoss 6.x EAP 上启用 Java 安全管理器时无法部署应用程序

我已经在 J​​Boss 6.x EAP 上部署了我的应用程序。启用安全管理器后,部署失败并出现以下异常。

我已按照安全指南中提到的步骤操作: https ://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6.4/html/Security_Guide/Run_JBoss_Enterprise_Application_Platform_Within_the_Java_Security_Manager.html

我附上了standalone.conf.bat 和server.policy 文件以供参考。

Standalone.conf.bat

服务器策略

如果我错过了任何步骤或者是服务器问题,请告诉我。

提前致谢..

0 投票
1 回答
4237 浏览

java - JVM 安全管理器文件权限 - 自定义策略

我使用 JVM 安全管理器自定义策略发现了某种意外行为。

回购:https ://github.com/pedrorijo91/jvm-sec-manager

在分支 master 中,进入/code文件夹:

  • 自定义策略文件授予文件的文件读取权限../allow/allow.txt
  • 没有文件权限../deny/deny.txt
  • HelloWorld.java 中的代码尝试读取这两个文件
  • 有一个run.sh脚本可以运行命令

现在一切都按预期工作:允许的文件读取,但另一个引发安全异常:java.security.AccessControlException: access denied ("java.io.FilePermission" "../deny/deny.txt" "read")

但是,如果我将两个文件 (../allow/allow.txt../deny/deny.txt) 都移动到code文件夹中(更改自定义策略和 java 代码以使用这些文件),我也不会例外。(分支“意外”)

当前目录是特例还是发生了其他事情?

0 投票
1 回答
732 浏览

java - 除了对 System.exit 进行单一检查调整外,与 NO 安全管理器相同的 java SecurityManager

我不精通 java 安全管理器,因此想确认我的理解:

我有一个随机停止(关闭挂钩运行)的 java 进程,即使没有人杀死它的痕迹。结果,我决定安装一个安全管理器并覆盖checkExit(int status)以确保停止的原因不是调用System.exit()。基本上我是这样写的:

我原以为我的程序会像往常一样运行,唯一的变化是如果调用 System.exit() 会转储堆栈跟踪。我发现事实并非如此。它无法以此安全异常开始:

似乎 SecurityManager 没有复制默认行为,并且在阅读了它之后似乎它应用了默认策略,${JAVA_HOME}/jre/lib/security/java.policy该策略非常严格。

当没有安全管理器时,Java 的真正默认行为是什么?是“允许一切”还是发生了其他事情?

如果我想复制默认行为,除了上面的单个调整之外,我应该安装什么作为安全管理器?

在最后一点上,我可以看到System.setSecurityManager()实际上需要一个实例,java.lang.SecurityManager这意味着我被迫使用该实现(依赖于策略文件)。覆盖该类中的方法以复制 NO 安全管理器的实际默认行为的最有效方法是什么?

编辑:根据下面的讨论,这似乎可以做到

0 投票
0 回答
247 浏览

java - Java - 每线程/加载的类权限

我似乎遇到了一些问题。我已经彻底研究了这个主题,但没有找到任何解决方案。

我有一个主要的java程序,例如“服务器”,它使用这种方法导入java .jar“插件”:如何在运行时从文件夹或JAR加载类?

现在,假设一个插件可以运行并影响其他插件的配置文件/系统文件。

我已经调查过了SecurityManager,但我无法获取 Object 试图访问所述权限的内容。

我注意到我可以Java policy files用来将类/代码库限制为某些权限。最终目标是允许每个插件访问它们自己的目录(我们可以放心地假设它已经创建),并限制其他某些权限。

我使用了以下策略文件来查看是否可以将 codeBase 用于 jar 文件中的路径,但它似乎不起作用。

例如: 在 policy.pol 中:

..我可以使用以下代码在运行时设置策略。

以下代码位于 myPlugin.jar 中名为“Main”的类中

当我使用反射运行上面的代码时,会出现以下异常:

有什么我做错了吗?有没有更好的方法来实现预期目标?非常感谢任何信息!