スタック検査はどのように機能しますか?


11

これは、スタック検査に関する他のより高度な質問の前兆です。

スタック検査は、JVMに導入されたセキュリティメカニズムであり、信頼レベルの異なる場所から発信された実行コードを処理します。これは、その機能の簡単な説明を見つけることを目的とした質問です。そう:

スタック検査はどのように機能しますか?

回答:


7

見る

論文より:

...現在のJavaシステムで使用されているスタック検査アルゴリズムは、次の単純なスタック検査モデルの一般化と考えることができます。

このモデルでは、プリンシパルは「システム」と「信頼できない」だけです。同様に、使用できる唯一の特権は「完全」です。このモデルは、Netscape Navigator 3.0で内部的に使用されているスタック検査システムに似ています。

このモデルでは、すべてのスタックフレームはプリンシパル(フレームが仮想マシンまたはその組み込みライブラリの一部であるコードを実行している場合は「システム」、それ以外の場合は「信頼されていない」)でラベル付けされ、 「その特権を有効にする」ことを選択したシステムクラスによって設定され、危険なことをしたいことを明示している。信頼できないクラスは、その特権フラグを設定できません。スタックフレームが存在する場合、その特権フラグ(存在する場合)は自動的に消えます。

ファイルシステムやネットワークへのアクセスなど、危険な操作を実行しようとするすべての手順では、最初にスタック検査アルゴリズムを適用して、アクセスを許可するかどうかを決定します。スタック検査アルゴリズムは、呼び出し元のスタック上のフレームを、新しいものから古いものへと順番に検索します。特権フラグ付きのスタックフレームが見つかると、検索が終了し、アクセスが許可されます。また、信頼されていないスタックフレーム(特権フラグを取得できなかった可能性がある)を検出すると、検索は終了し、アクセスが禁止され、例外がスローされます。...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.