问题标签 [securitymanager]
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.
java - 反射安全
如何通过不允许Method
, Field
,Constructor
对象调用来强制反射安全setAccessible(true)
?SecurityPolicy 文件或其他内容?
通常对于独立的 Java 应用程序没有SecurityManager
注册。
我用这个System.setSecurityManager(new SecurityManager());
这种方法适用于调用方法。
我想强制执行整个 jar 或使用 jar 的客户端代码不允许调用setAccessible(true);
有更好的方法吗?
谢谢。
java - mockito vs 密封包装
我正在从事一个具有严格安全限制的项目。一个要求是密封我们的罐子。
由于我们密封了 jars,我们的很多 junit-tests 都失败了,并出现以下错误:
看起来问题是由 Mockito 引起的:
我们“mock”和“spy”来自一些外部密封 jar 的类,而 Mockito 生成的“mock classes”与“mocked classes”具有相同的包。
因为依赖 jar 中的包是密封的,所以被测试的 jar 无法在同一个包中创建类(URLClassLoader 会检查不同密封 jar 中没有使用同一个包)。
I tried to add a specific SecurityManager .policy file for junit testing, but I didn't found a property allowing to have classes inside a package already sealed by a dependency.
Moreover, it seems that the URLClassLoader has no option to remove sealing violation check.
The version of Mockito we use is 1.8.5. I tried to use the latest version (1.9.5) but it didn't fix the error.
If someone has an idea...
java - 如何沙箱类?
假设我有一个网站,人们可以在其中以课堂形式上传他们的代码。我怎么能限制该课程中实际可以做的事情?
java - 有没有办法在 Java 中执行不安全的代码(禁用安全管理器)?
请不要发布“你不应该这样做”的答案。我不打算在生产代码中使用它,而只是为了一些黑客的乐趣。
在回答这个问题时,我想运行一些任意不安全的 Java 代码来取乐。有问题的代码只涉及查找 Java 的叶节点TreeMap
。
运行以下代码会导致
根据这个问题,我可以System.setSecurityManager(null)
用来绕过大部分这些限制。但我不能这样做,因为加载我的类时会弹出错误。
我已经知道在禁用安全管理器后我可以使用反射来做所有我想做的事情。但这会使代码更难看。核心 Java 开发人员如何编写他们的单元测试,例如,如果他们不能将东西打包到java.util
.
我也尝试过-Djava.security.manager=...
,但是当我将它设置为 时,这会导致 JVM 初始化错误null
,而且我不确定我还能将它设置为什么。有任何想法吗?
java - JAVA SecurityManager - 具有多个操作的自定义 BasicPermission
我创建了以下策略文件:
为了访问它,我使用以下参数运行我的 JVM:
我的代码如下所示:
一切都很好,但我想更细化一点,而不检查“保存”操作:
即使我的策略同时指定“使用”和“保存”,这似乎也不起作用,我应该怎么做才能提供这样的功能?
非常感谢,弗拉德
java - 执行 JNLP 文件会引发 AccessControlException
我正在尝试执行这个jnlp 应用程序。但是,我不断收到此安全异常:
我尝试更改 Java 控制面板(OSX 10.8.3)中的安全设置,但它们似乎被禁用并且我无法修改它们(我确实可以检查“在浏览器中启用 Java 内容”选项,但它在我点击应用)。如下图所示:
是否有另一种机制可以绕过 Java 安全管理器并能够执行 jnlp 应用程序?
更新:
重新安装 Java 后,我终于能够更改 Java 控制面板中的安全选项(我没有做任何特别的事情,只是从头开始重新安装)。不幸的是,当我执行jnlp 应用程序时,它会默默地死掉而没有显示任何错误。这个问题可能与我使用的是 jdk 1.8(因为 jnlp 应用程序需要 javafx)并且它只是一个预览版本(并且 OSX 这些天似乎不太喜欢 Java...),它是我最好的猜测,但我不能完全确定。
java - System.exit(0) 在安全管理器下可能没有授权
可以正确执行,运行
应用政策:
写入文件的安全管理器工作正常,当我从 app.policy 中删除授权时,执行 new FileWriter("out.txt"); 时我正确地得到异常;
C:\workspace_tomcat\secureWeb>java-版本
当我运行 System.exit(0); 在带有安全管理器的Tomcat下的webapp中,我正确地得到了异常。
java - 为什么 java 安全管理器既不禁止创建 new Thread() 也不禁止启动它?
您是否知道解释为什么 java 安全管理器不禁止创建新线程或启动它们?new FileWriter 在安全管理器下,但 new Thread() 和 threadInstance.start() 都不是安全管理器下的,并且可以调用。
- 禁止它不是有用吗?
- 实施起来会不会很困难?
- 或者创建和启动新线程与禁止它无关?
java - java.net.SocketPermission:“connect.resolve”
我在连接 Active Directory 时遇到问题。有问题的代码如下:
当我调试它时,它给了我一个错误:
我尝试连接的 IP 是 192.168.0.99 (Windows 7) 192.168.0.100 安装了 Windows 2008,当我尝试从 192.168.0.100 本身连接时,我仔细检查了连接没有任何问题。你能给我一点建议吗?如果需要,我很乐意提供更多信息