【发布时间】:2010-10-20 17:10:46
【问题描述】:
我需要调用一些半可信的 Java 代码,并希望在该代码执行期间禁用使用反射的功能。
try{
// disable reflection somehow
someObject.method();
}
finally{
// enable reflection again
}
这可以通过 SecurityManager 来实现吗?如果可以,如何实现?
澄清/上下文:这是another question 的后续内容,关于限制可以从 JavaScript/Rhino 调用的包。接受的答案引用了一篇关于如何做到这一点的博客条目,它需要两个步骤,第一个步骤使用 Rhino API (ClassShutter),第二个步骤关闭反射和 Class.forName()。我在想我可以使用 SecurityManager 更干净地完成第二步(了解 SecurityManager,正如已经指出的那样,这是一个复杂的过程)。
总而言之,我希望(从代码,而不是设置文件)关闭 Class.forName() 以及对整个反射包的任何访问。
【问题讨论】:
-
我不确定 SecurityManager 的工作原理,但请查看以下问题:http://stackoverflow.com/questions/762459/how-to-disable-java-security-manager
标签: java security reflection sandbox securitymanager