合格.dev › 応用情報技術者試験 › 応用情報技術者試験 令和7年度春期 午前 › 問42 応用情報技術者試験 応用情報技術者試験 令和7年度春期 午前 問42: Web アプリケーションソフトウェアの開発における OS コマンドインジェクション対策はどれか。 Web アプリケーションソフトウェアの開発における OS コマンドインジェクション対策はどれか。
SQL 文の組立ては全てプレースホルダで実装する。
シェルを起動できる言語機能を利用した実装を避ける。
直接メモリにアクセスできる言語機能を利用した実装を避ける。
利用者が入力したファイル名にディレクトリが含まれていないかのエラーチェックを実装する。
48.88%
問題本文 Web アプリケーションソフトウェアの開発における OS コマンドインジェクション対策はどれか。
選択肢 ア. SQL 文の組立ては全てプレースホルダで実装する。イ. シェルを起動できる言語機能を利用した実装を避ける。ウ. 直接メモリにアクセスできる言語機能を利用した実装を避ける。エ. 利用者が入力したファイル名にディレクトリが含まれていないかのエラーチェックを実装する。正解 イ. シェルを起動できる言語機能を利用した実装を避ける。
解説 攻撃手法ごとに有効な対策が異なることを問う問題。OS コマンドインジェクションは,利用者入力を OS のシェル(コマンドインタプリタ )に渡す処理に攻撃者が不正なコマンド文字列を紛れ込ませ,サーバ上で任意の OS コマンドを実行させる攻撃である。そもそもシェルを起動する言語機能(system 関数など)を使わない実装にすれば攻撃が成立しないため,最も直接的な対策となり,正解はイ。
選択肢ごとの解説 ア. プレースホルダ(バインド機構)の利用は SQL インジェクション対策であり,OS コマンドインジェクション対策ではないので誤り。イ. 正しい。シェルを起動できる言語機能を使わなければ,外部から渡された文字列が OS コマンドとして解釈される余地がなくなり,OS コマンドインジェクションを防げる。ウ. メモリに直接アクセスする言語機能を避けるのはバッファオーバフローなどメモリ破壊系の脆弱性対策であり,OS コマンドインジェクション対策ではないので誤り。エ. 入力ファイル名にディレクトリが含まれないか確認するのはディレクトリトラバーサル(パス名パラメータの未チェック)対策であり,OS コマンドインジェクション対策ではないので誤り。応用情報技術者試験 令和7年度春期 午前 の過去問一覧 へ戻る・問42