JavaのSecurityManagerを開く


詳細
SecurityManagerはJavaで、ファイル、ソケットなど、アプリケーションが限られたリソースにアクセスできるかどうかを確認するために使用されます.セキュリティの要件が高いアプリケーションで使用できます.この機能を開くことで、私たちのシステムリソースは安全な操作だけを許可することができます.
Java仮想マシンが起動すると、まずシステムのプロパティjava.security.managerを確認して、SecurityManagerが開いているかどうかを確認します.開いている場合は、SecurityManagerインスタンスが作成され、異なる権限を確認するために使用できます.デフォルトではSecurityManagerはオフになっていますが、ここではSecurityManagerを開く方法があります.
1.-Djava.security.managerの指定
プログラムを実行すると、JVMコマンドを指定できます. -Djava.security.manager SecurityManagerを実行します.
1 java -Djava.security.manager
これはSecurityManagerを開く最も一般的な方法です.JAva.security.managerはシステム属性であり、System.getProperty(「java.security.manager」)を使用してシステム属性が設定されているかどうかを確認できます.
ここでは、System.setProperty(「java.security.manager」)を使用してSecurityManagerを開くことができますが、このような設定はできません.先に述べたように、このシステムのプロパティは、JVMが起動したときにチェックされます.JVMが起動しているため、システムのプロパティを確認する手順が完了しているため、プログラムで手動でプロパティを設定しても効果はありません.
2.プログラムでSecurityManagerを開く
今、もし私たちが本当に私たちのプログラムを通じてSecurityManagerを開きたいなら、私たちもできます.SystemクラスにはsetSecurityManager()という方法があります.このメソッドのパラメータはSecurityManagerのインスタンスです.
1
2 SecurityManager sm= new SecurityManager(); System.setSecurityManager(sm);
これにより、SecurityManagerを開くことができます.後でSecurityManagerを閉じたい場合は、どうすればいいですか?次のコードはできますか?
1
2
3
4 SecurityManager sm=System.getSecurityManager(); if (sm!= null ){      System.setSecurityManager( null ); }
上のコードは、${JAVA_HOME}/lib/securityディレクトリまたは他の指定ディレクトリのjava.policyファイルに権限を指定してこそ効果的です.この権限は次のとおりです.
1 permission java.lang.RuntimePermission "setSecurityManager";
上の行は、SecurityManagerのコード設定を許可するために使用されます.
3.buildファイル内
SecurityManagerを開きたいのですが、Antを使用してアプリケーションを構築する場合は、
1 < sysproperty key = "java.security.manager" value = "" />
Antによってセルテストを作成するときに非常に役立ちます.