MVEL 式の評価をサンドボックス化しようとしています。残念ながら、MVEL にはデフォルトで式言語のすべての java.lang.* クラスが含まれているため、ユーザーは「Runtime.exit()」を呼び出してシステム全体を強制終了する可能性があります。
addImport() で明示的に追加していないすべてのクラスを除外するにはどうすればよいですか?
VariableResolvers の頭または尾を作成できませんでした。
MVEL 式の評価をサンドボックス化しようとしています。残念ながら、MVEL にはデフォルトで式言語のすべての java.lang.* クラスが含まれているため、ユーザーは「Runtime.exit()」を呼び出してシステム全体を強制終了する可能性があります。
addImport() で明示的に追加していないすべてのクラスを除外するにはどうすればよいですか?
VariableResolvers の頭または尾を作成できませんでした。
私の知る限り、これはサポートされていません。
少し前に、会社のプロジェクトでこの必要性に直面しました。タイプとメソッドへのアクセスを制御するカスタム ポリシーを構成する方法を導入するには、MVEL をかなり変更する必要がありました。問題は、完全修飾名で任意のクラスにもアクセスできるため、デフォルトのインポートを削除するだけの問題ではありませんでした。残念ながら、私はそれを利用できるようにするためのコードを所有していません。
ParserContext ctx = new ParserContext();
ctx.addImport("System", String.class);
ctx.addImport("Runtime", String.class);