料AboutJavaScriptを有効にして、ご利用ください。メソッドに渡さないシステムが必要とする処理を実行するために外部プログラムを呼び出すことはよくある。これは、コードの再利用の一形態であり、コンポーネント指向ソフトウェア開発の原始的な形態と見ることもできるだろう。信頼できない入力を無害化せず、それを使って外部プログラムを実行すると、コマンドインジェクションや引数インジェクションの脆弱性につながる。クラスのインスタンスを1つだけ持っており、このインスタンスを通じて実行環境とのやりとりを行うことができる。メソッドを呼ぶことで取得できる。セマンティクスは厳密に規定されていないため、このメソッドの動作に必要以上に依存すべきではない。Runtime.execは一般に、シェルを介さず直接コマンドを起動する。使ってトークンに分解する。Windowsでは、これらのトークンは1つの文字列に組み立て直されたのちに実行される。したがって、コマンドインタプリタが明示的に呼び出されないかぎり、コマンドインジェクション攻撃は成功しないだろう。文字で始まる引数によって、引数インジェクション攻撃を受ける可能性はある。インジェクションを防ぐ」の個別具体例である。プログラムの信頼境界外から取得した文字列データは、コマンドとして実行される前に無害化しなくてはならない。(Windows)以下の違反コード例は「dir」コマンドを使ってディレクトリ内のファイル一覧を行うものである。コマンドを起動している。実行環境から取得され、無害化されていないデータを受け取るため、このコードはコマンドインジェクション攻撃を受ける可能性がある。攻撃者は以下のようなコマンドを指定して攻撃することができる。Java実際には、2つのコマンドが実行される。badこのコマンドは、最初に存在しないフォルダ「dummy」をリストし、次に文字列「bad」をコンソールに出力する。「ls」コマンドを使っている。メソッドに渡す引数のみが違反コード(Windows)と異なる。}}攻撃者は違反コード(Windows)と同様の手法で攻撃を行うことができる。実際に実行されるコマンドは以下になる。(無害化)以下の適合コード例では、ホワイトリストに登録された少数の文字だけがRuntime.exec()メソッドに引数として渡されるよう制限することで、信頼できないユーザ入力を無害化している。...この適合コードの無害化方法では、ディレクトリ名を表す正当な入力をエラーにしてしまう場合がある。実行されるコマンドインタプリタがシステム依存であるため、このコードがJavaプログラムが実行されるあらゆる環境でコマンドインジェクションを防止できると断言することもできない。渡すことにより、コマンドインジェクションを防いでいる。引数文字列をあらかじめ決められた選択肢の中から選ぶことはできるが、直接渡すことはできない。エラー処理}この適合コードでは選択されるディレクトリをハードコードしている。選択肢に含めたいディレクトリの数が多くなれば、この方法が破綻するのは明らかである。オブジェクトに読み込むというやり方がある。使わない)システムコマンドの実行により行われるタスクの処理を別の手段で実現できるのであれば、ほとんどの場合、別の手段を採用するほうがよい。メソッドを使ってディレクトリのリスティングを行い、コマンドインジェクション攻撃や引数インジェクション攻撃を防いでいる。メソッドに渡すと、コマンドインジェクション攻撃や引数インジェクション攻撃を受ける可能性がある。2008]翻訳元これは以下のページを翻訳したものです。有このページは役に立ちましたか?javascriptを有効にすると、ご回答いただけます。その他のご意見はPCサイトにて入力願います。