问题标签 [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.
security - JRuby 的 Java 安全管理器
我允许用户提供的 ruby 代码在服务器(java 脚本)中运行,并且由于 jruby 不支持 ruby 中的安全级别,因此我正在考虑使用 java 的安全管理器。
这是一个好的决定吗?有没有其他人实施过这个?是否有任何好的文章/书籍/资源可以将我介绍给安全经理?
java - JVM - Java 虚拟机损坏
如何检查和检测损坏的 JVM?如何检查安全管理器、字节码验证器和类加载器是否正常工作?
java - Java 安全管理器 checkExec
我在尝试在 Java 安全管理器中实施安全检查时遇到问题。
我似乎误解了安全管理器中 checkExec() 方法的用途。我认为当我的应用程序尝试通过命令行调用另一个 Java 应用程序时它会被调用,但这似乎并没有发生。
这就是我想要发生的事情:使用我的自定义安全管理器的调用应用程序在命令行上执行“java SomeApp”。安全管理器检查这是否正常并执行适当的操作。
为了做到这一点,我做了以下事情:
创建了一个覆盖该
checkExec
方法的自定义安全管理器。方法签名是public void checkExec(String cmd)
.创建了一个测试类,SecurityTest。
SecurityTest 将我的自定义安全管理器指定为其安全管理器。
SecurityTest 然后
java InvokeMe
在命令行上运行。自定义安全管理器拦截了这一点并做一些事情。
1 到 4 很好,但 5 永远不会发生。我已验证我的自定义安全管理器有效,它已成功分配给 SecurityTest,并且 SecurityTest 成功运行了 InvokeMe。但是,据我所知,我的自定义安全管理器中的 checkExec() 方法永远不会被调用。
我哪里错了?我正在尝试做的事情(让安全管理器在应用程序调用时做某事java SomeApp
)甚至可能吗?
感谢您的时间。
编辑:
这是运行测试产生的一些代码和输出。这是快速原型风格,“先把它搞定,以后再清理”风格的代码,所以它不会很漂亮:
自定义安全管理器:
安全测试:
调用我:
测试输出:
没有迹象表明 checkExec() 被调用——没有控制台输出,并且 Verification.txt 在我的文件系统上的任何地方都不存在。(当然,我不确定在执行此类操作时安全管理器子类的行为应该是什么——所以这可能是正常的。如果是这种情况,我需要另一种快速而简单的方法来测试我是否'我打了某些代码行。) InvokeMeWasCalled.txt 确实存在,所以这部分肯定是有效的。
java - 如何“隐藏”敏感的系统属性,如 Java 应用程序设置的密码?
我正在维护一个现有的 Java 产品(它有一个巨大的代码库)。我发现它在不少于 4-5 个不同的地方(方法)设置(和获取)两个内部密码作为 Java 系统属性。现在,问题是,密码以纯文本形式存储在 Java 系统属性中,因此对于外部实体也是可见的,因为应用程序没有使用任何 Java 安全管理器。例如,如果应用程序(进程)在端口号 1234 上运行,我们可以运行 Java 命令:
将这两个密码视为相应 Java 系统属性的值。我想问一下,在不过多更改现有代码库的情况下是否有任何补救措施?期望的效果是对所有外部实体“隐藏”两个 Java 系统属性(表示两个密码)。
需要注意的是,在应用程序中引入 Java 安全管理器可能不是一个解决方案,如果我们使用 Java 安全管理器撤销这两个 Java 系统属性的读取权限,读取这些属性的应用程序代码就会崩溃。同样适用于以加密形式存储密码,因为这会使应用程序中所有希望以明文形式读取密码的代码崩溃。
permissions - 配置 WebLogic 和 Java 安全管理器
我正在尝试配置Java Security Manager
以保护 WebLogic 资源,但是当我启动 WL 时,出现错误:
AccessControlException
: 拒绝访问
我的 weblogic.policy 包括:
+ 所有,我通过使用打印安全管理器获得。我做错了什么?
java - 在 Java 中访问我的 jks 密钥库时出现问题
我正在尝试从我的本地计算机测试 HTTPS SSL 连接,因为我在我的服务器中实现相同的问题时遇到了一些问题。
我遵循的步骤
我从浏览器下载了第三方 HTTPS 服务器 SSL 证书(DER 格式),我看到它是由 Comodo RSA 颁发的
我尝试使用命令提示符中的命令将密钥作为 .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
所以我用谷歌搜索并使用命令创建了密钥库
keytool -genkey -alias mykey -keystore "C:\Program Files\Java\jre1.6.0\lib\security\certificate.jks"
现在我执行了相同的命令(步骤 2),它运行成功。我什至可以列出并查看 certificate.jks 文件中的证书。
但是,当我尝试访问我的 java 程序中的 certificate.jks 作为密钥库时,它会失败并出现错误“找不到文件 - certificate.jks”。
/li>
请澄清我在这里做错了什么。
另外,我尽量不使用 cacerts,因为它会在我的服务器中自动刷新。而且我相信如果我创建自己的.jks,它不会被引用。请帮忙。
谢谢
java - 在 JBoss 6.x EAP 上启用 Java 安全管理器时无法部署应用程序
我已经在 JBoss 6.x EAP 上部署了我的应用程序。启用安全管理器后,部署失败并出现以下异常。
我附上了standalone.conf.bat 和server.policy 文件以供参考。
Standalone.conf.bat
服务器策略
如果我错过了任何步骤或者是服务器问题,请告诉我。
提前致谢..
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 代码以使用这些文件),我也不会例外。(分支“意外”)
当前目录是特例还是发生了其他事情?
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 安全管理器的实际默认行为的最有效方法是什么?
编辑:根据下面的讨论,这似乎可以做到
java - Java - 每线程/加载的类权限
我似乎遇到了一些问题。我已经彻底研究了这个主题,但没有找到任何解决方案。
我有一个主要的java程序,例如“服务器”,它使用这种方法导入java .jar“插件”:如何在运行时从文件夹或JAR加载类?
现在,假设一个插件可以运行并影响其他插件的配置文件/系统文件。
我已经调查过了SecurityManager
,但我无法获取 Object 试图访问所述权限的内容。
我注意到我可以Java policy files
用来将类/代码库限制为某些权限。最终目标是允许每个插件访问它们自己的目录(我们可以放心地假设它已经创建),并限制其他某些权限。
我使用了以下策略文件来查看是否可以将 codeBase 用于 jar 文件中的路径,但它似乎不起作用。
例如: 在 policy.pol 中:
..我可以使用以下代码在运行时设置策略。
以下代码位于 myPlugin.jar 中名为“Main”的类中
当我使用反射运行上面的代码时,会出现以下异常:
有什么我做错了吗?有没有更好的方法来实现预期目标?非常感谢任何信息!