我正在摆弄 java .policy 文件,并想知道如何做一些事情,例如阻止调用 java.util.Date() 等。
我只是想更好地了解 .policy 文件的工作原理以及如何将其用于沙箱代码。
最佳答案
恐怕你会不走运。
正如 Paŭlo Ebermann 所说,package.access
可以阻止包层次结构。您可以通过自定义 SecurityManager
对此进行更精确的说明。 ,这通常是一个非常好的迹象,表明您正在做一些非常狡猾的事情。
一般来说你可以做一个ClassLoader
它并不总是委托(delegate)给其父级。从技术上讲,不符合当前的 Java SE 规范,尽管 Java EE 规范鼓励这样做。你可以屏蔽java.util.Date
。如果任何其他类引用它,仍然可以通过反射访问它,或者您可以获得它的实例。您可以阻止 Date
的使用的传递闭包,包括以某种方式返回 Date
的那些。但是,要在最短日期内完成该计划,您必须加载 java.util.Date
在您的类加载器中,您不能将其与所有其他java.*
一起使用类。
所以,错误,替换 java.util.Date
rt.jar 中的类(可能使用 Java 代理),并替换为您不想限制的任何类 new Date()
与 new Date(System.currentTimeMillis())
.
(顺便说一句,+1 到任何减少对 System.currentTimeMillis()
和其他魔术方法的依赖的东西。)
关于Java .policy 文件 - 如何防止 java.util.Date() 被访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5083619/