我目前正在对 java 的安全机制进行大量试验,以了解如何在沙箱中最好地执行不受信任的代码。您要防止的一件事是无限循环,这就是为什么理想情况下您希望在其自己的线程中运行不受信任的代码。现在,当然,恶意代码可以进行一些繁重的处理,从而导致线程挂起。要基本上摆脱这个线程,唯一的方法是使用 java 已弃用的 Thread.stop() 机制。这是有问题的主要原因是线程持有的所有锁都被释放,这可能导致对象损坏。
问题是:使用 Java 的 SecurityManager 和自定义类加载器,我可以跟踪例如可以加载哪些类以及可以访问哪些系统资源。有没有办法通知(并可能禁止)代码获取锁(例如,定义在当前线程进入同步块之前通知的回调)。