1
我在我的Java應用程序中嵌入了jython。用戶將能夠提交和執行一些python腳本。我想確保他們不會從這些腳本中訪問一些易受攻擊的java包/類。另一種選擇是根本禁用java整合。如何從Jython中禁用對某些Java包的調用
我在我的Java應用程序中嵌入了jython。用戶將能夠提交和執行一些python腳本。我想確保他們不會從這些腳本中訪問一些易受攻擊的java包/類。另一種選擇是根本禁用java整合。如何從Jython中禁用對某些Java包的調用
有可能設置jython將使用的自定義類加載器。代碼看起來像這樣:
final PySystemState state = new PySystemState();
state.setClassLoader(new MyClassLoader());
Py.setSystemState(state);
然後在MyClassLoader可以查看哪個java類是在腳本中被訪問,並拒絕它基於一些標準。這看起來像這樣
public class MyClassLoader extends ClassLoader
{
@Override
protected synchronized Class<?> loadClass(final String className, final boolean resolve)
throws ClassNotFoundException
{
if (className.startsWith("secret.class"))
{
throw new RuntimeException();
}
return MyClassLoader.getSystemClassLoader().loadClass(className);
}
}
看看java安全管理器,它允許您選擇可以訪問或不可訪問的內容。