料AboutJavaScriptを有効にして、ご利用ください。環境変数の値を信頼しない環境変数およびシステムプロパティはどちらも、利用者がキーとそれに対応する値を定義し、それらの値を実行環境からプロセスへと伝えるために用いられる。クラスには以下のように記述されている。環境変数は、よりグローバルな効果を及ぼす。サブプロセスのみでなく、プロセスにより定義されたすべての子孫に環境変数がみえるからである。これらは、異なるオペレーティングシステム上で微妙に異なるセマンティクス(大文字と小文字を区別しないなど)を持つ可能性がある。これらの理由から、環境変数は意図しない副作用を持つ可能性が高くなる。可能な場合は、システムプロパティを使用することがもっとも適切である。)を必要とするときに使うべきである。自身が置かれた環境よりも信頼度が高いドメインで実行されるプログラムは、環境変数の値は信頼できないものと想定し、その値を使用する前に無害化と検証を行わなくてはならない。システムプロパティのデフォルト値は、Java仮想マシン(JVM)により起動時に設定されるものであり、この値は信頼できるものであろう。これらデフォルト値は、設定ファイル等の信頼できない入力から取得されたプロパティによって上書きされているかもしれない。したがって、信頼できない入力から取得したシステムプロパティは、使用する前に無害化と検証を行わなくてはならない。可搬性を高めるために、環境変数の値と同じ値をシステムプロパティを使って取得できるのであれば、環境変数の値を参照すべきではない。実際のところ、環境変数への依存は可搬性の問題だけでは済まない。クラスなどのメカニズムを使用することで、プログラムで使われるすべての環境変数の値を制御できる。したがって、環境変数の値に含まれる情報を、システムプロパティを含む他の手段で取得できるならば、環境変数は使用してはならない。使用するのであれば、環境変数は適切な検証を行った上で用いること。違反コード以下の違反コード例は、環境変数を使ってユーザ名を取得しようとしている。System.getenv("USER");このコードにはまず可搬性の問題がある。チュートリアルは以下のように推奨している。環境変数の用いられ方は実行環境によって異なる。USER、LOGNAME、あるいはその両方で表される。値を任意の値に書き換えた上でこのプログラムを実行することができる。プラットフォームにおいて行うものである。環境変数の値をその文字列に設定する。与えられた引数に設定されていることがわかる。システムプロパティを使ってユーザ名を取得している。環境変数の値が間違った値に設定されていたり、あるいはそもそも存在しない場合であっても、JVMはその初期化時に、このシステムプロパティを正しいユーザ名に設定する。信頼できない環境変数を適切に無害化せずに使うと、データインジェクションやその他の攻撃を受ける危険がある。1996]翻訳元これは以下のページを翻訳したものです。有このページは役に立ちましたか?javascriptを有効にすると、ご回答いただけます。その他のご意見はPCサイトにて入力願います。