使用受限权限在Java中执行方法

wrs*_*der 9 java

有什么办法可以用AccessController.doPrivilegednew AccessControlContext限制对类/方法的访问吗?我想有一个子程序可以调用不受信任的代码而无需访问触摸文件系统或打开套接字.

具体用例是允许最终用户提供可以使用有限权限执行的代码或脚本片段(例如,Javascript或Groovy).

我正在寻找的是类似普通安全策略文件的东西,其范围限于用户提供的代码而不是整个JVM.

cdk*_*rot 1

我现在不了解 AccessController 方式。但也许您可以使用以下方案来控制情况。您将需要有多个类加载器:首先按原样加载类。其次(或者理想情况下根据不受信任的代码源的数量),它将转换类以进行修补或提供其特殊修补版本而不是普通类。最后是系统类加载器,它实际上会执行例程。

另外不要忘记保护 Classloader.getSystemClassLoader。为了转换对象,您可以使用 java 反射 API 或 objectweb asm 库。