Javaのセキュリティアクセス制御

私たちは、特に読んで、より根本的なコードの一部では、下のようなコードを見ていると信じています。

セキュリティマネージャSM = System.getSecurityManager()。
もし(SM!= NULL){ 
    sm.checkRead(名)   
} 

// FileInputStream.java

このコードは、それはどういう意味ですか?正直なところ、長い時間のために私は完全にすべての後に、多くのない、理解していました。含むが冒頭で「JVMの深い理解」を読んで、私は理解していませんでした。

そして敏感コード:背後にある、公式ドキュメントとコードの前に、それは実際には(ローカルファイルなど)に敏感な資源を保護するためにいくつかのセキュリティを提供するセキュリティプログラムのJavaプラットフォームであり、次について慎重に検討。SecurityManagerがセキュリティ管理者となっている、すべての安全関連の決定を決定するために、クラスによって作られています。デフォルトでは、Javaのローカルアプリケーションが開いていない、あなたが開始するには、このコマンドを追加する必要があります。 -Djava.security.manager。

 

アクセス許可のデフォルトの権限

クラスがメモリにロードされると、ローダは、自動的に次の情報を関連付けますとき:

1.クラスパス。それはインターネットからダウンロード、またはローカルファイルからロードされているかどうか、URLの形で表現パスがあるでしょう。

2.署名

3.デフォルトの権限。インターネットからロードされたコードの場合、デフォルトのアクセス権は、アドレスのソースコードへの接続背面に権限が含まれています。ローカルファイルからロードされたコードの場合、デフォルトのアクセス権は、同じディレクトリやサブディレクトリからファイルを読み取るためのアクセス許可が含まれています。

 

ポリシー(ポリシーファイルの列)

先に述べたように、割り当てられたコードは、クラスがロードされる時にロードされたいくつかのデフォルトのアクセス権があるでしょう。また、管理者は、ポリシー文書を通じて追加の権利を管理することができます。列のデフォルトポリシーファイルのパス:<JAVA_HOME> /jre/lib/security/java.policy。

Javaプラットフォームは、ポリシー文書のポリシーオブジェクトにパッケージ化され、このプロセスは一つだけのJavaポリシーオブジェクトを持っています。政策の主なタスクは、リソースへのアクセスを許可するかどうかを判断することである(URL、署名とコードを呼び出すデフォルトの権限に基づいて判断をするために)コードアクセスと呼ばれています

 

アクセス制御施行(アクセスコントロール)

保護されたリソースにアクセスするときのJavaランタイムがコールスタック(順番に呼び出し方法など)をトレースする、全体コールスタックは、アクセスがあるかどうかを評価すべきです。いずれかの権限を持っていない場合は、java.lang.SecurityExceptionをスローします

 

例えば、以下のように示します。ClassA ClassBのは、ClassBのは、FileInputStreamを、読み取り許可FileInputStreamのコンストラクタチェックファイルを作成し、メソッドを呼び出します。他の三つのクラスがすべて自動的に完全な権限を持っているためにClassAとClassBのは、読み取り許可を持っているかどうかをシステムがチェックするだけ。ファイルを表示するのjava.policy。

 

 

 

 

参考:https://docs.oracle.com/javase/8/docs/technotes/guides/security/overview/jsoverview.html

 

おすすめ

転載: www.cnblogs.com/lzmrex/p/12469752.html