9

クラス/メソッドへのアクセスを制限するAccessController.doPrivilegedために new で使用できる方法はありますか? ファイル システムにアクセスしたり、ソケットを開いたりすることなく、信頼できないコードを呼び出すことができるサブルーチンが必要です。 AccessControlContext

具体的な使用例としては、制限付きの権限で実行できるコードまたはスクリプト (Javascript や Groovy など) のフラグメントをエンド ユーザーが提供できるようにすることが挙げられます。

私が探しているのは、通常のセキュリティ ポリシー ファイルのようなもので、JVM 全体ではなく、ユーザー提供のコードにスコープが設定されています。

4

3 に答える 3

1

Java-Sandboxはまさにこのためのツールです。制限されたメソッドに対して、ホワイトリストに登録されたクラスとリソースのセットのみへのアクセスを許可するために使用できます。これを実現するために、カスタム クラス ローダーとセキュリティ マネージャーを備えたシステムを使用します。バイトコードの操作や同様のトリックは必要ありません。

私はそれを使用していませんが、適切に設計され、適切に文書化されているように見えます。

その Web サイトのコード例:

class Untrusted extends SandboxedEnvironment<Object>() {
    @Override
    public Object execute() {
       /* untrusted code */
       return null;
    }
};

service.runSandboxed(Untrusted.class, context);
于 2013-11-17T20:51:57.360 に答える
0

これがあなたが探しているものなら

@PreAuthorize("hasRole('ROLE_USER')")
public void create(Contact contact);

Spring Security、 Expression-Based Access Control をご覧になることをお勧めします。

于 2013-09-17T18:42:19.017 に答える