2012-03-12 12 views
1

私の埋め込まれたGroovyをサンドボックスにしたいのですが、クラスとリソースの解決を試みるときにどこで何が読み込まれるかを抽象的に紹介したいと思います。 Groovyに必要なものをパッチするライブラリがありますか?クラスのファイルシステムではなくClassLoaderからGroovyを読み込む方法は?

+0

私が知る限り、それを行うライブラリや抽象はありません。私は 'Thread.currentThread()。contextClassLoader = <あなたのクラスローダ>'に行きます。 –

+0

@benjaminMuschkoそのsuxの種類は誰でもctx clを設定でき、SecurityManagerでそのような試みをブロックするのは難しいです。 –

答えて

0

私は、ユーザがGroovyで独自のコントローラを作成できるCMSを作成しました。カスタムクラスローダーを使用してユーザーのクラスをロードし、InheritableThreadLocalも設定します<ブール>コントローラが動作していることを私のカスタムSecurityManagerに伝えます。

このThreadLocalのをtrueに設定すると、SecurityManagerがのcheckMemberAccess(を通じて特定のメンバーへのアクセスを禁止します)方法、およびそれだけてcheckPermission()方法でホワイトリストクラスとパッケージへのアクセスを可能にします。こうすることで、ユーザーが別のクラスローダーを使用してクラスをロードしても、フィールドメンバーへのアクセスを防ぐことができます。

関連する問題