簡體   English   中英

如何禁用從 Jython 對某些 Java 包的調用

[英]How to disable calls to certain Java packages from Jython

我將 jython 嵌入到我的 Java 應用程序中。 用戶將能夠提交和執行一些 python 腳本。 我想確保他們不會從這些腳本中訪問一些易受攻擊的 java 包/類。 另一種選擇是完全禁用 java 集成。

可以設置 jython 將使用的自定義 class 加載程序。 代碼如下所示:

final PySystemState state = new PySystemState();
state.setClassLoader(new MyClassLoader());
Py.setSystemState(state);

然后在 MyClassLoader 中,您可以檢查腳本中正在訪問哪個 java class 並根據某些標准拒絕它。 這看起來像這樣

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 安全管理器,它允許您訪問 select 什么可以訪問或不可以訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM