令和7年度 春期 応用情報技術者試験 午前 問42
テクノロジ/セキュリティWeb アプリケーションソフトウェアの開発における OS コマンドインジェクション対策はどれか。
出典:令和7年度 春期 応用情報技術者試験 午前 問42
- アSQL 文の組立ては全てプレースホルダで実装する。
- イシェルを起動できる言語機能を利用した実装を避ける。
- ウ直接メモリにアクセスできる言語機能を利用した実装を避ける。
- エ利用者が入力したファイル名にディレクトリが含まれていないかのエラーチェックを実装する。
正解:イ
解説
OS コマンドインジェクションは,外部からの入力値がシェルに渡されて OS コマンドとして解釈されることで発生します。したがって最も確実な対策は,シェルを起動する言語機能(system 関数やバッククォート,eval など)を使わずに実装することです。やむを得ず使う場合は,シェルを介さない API の利用や入力値のエスケープが必要になります。
選択肢ごとの解説
- ア誤り。SQL 文の組立てを全てプレースホルダで実装するのは,SQL インジェクションへの対策です。
- イ正しい。シェルを起動できる言語機能を利用した実装を避けることが,OS コマンドインジェクションの根本的な対策です。
- ウ誤り。直接メモリにアクセスできる言語機能を避けるのは,バッファオーバフローなどメモリ破壊に起因する脆弱性への対策です。
- エ誤り。入力されたファイル名にディレクトリが含まれていないかを検査するのは,ディレクトリトラバーサル(パス名パラメタの未チェック)への対策です。