正解は イ
OSコマンドインジェクションとは、Webアプリがユーザー入力を使ってOSコマンドを実行する際に、悪意ある入力によって意図しないコマンドを実行させる攻撃です。最も根本的な対策は「シェルを起動できる言語機能の使用を避ける」(選択肢b)ことです。例えばPythonのos.system()・subprocess.shell=True、PHPのexec()・passthru()、Javaのruntime.exec()にシェル経由オプションを使う実装を避けます。シェルを起動しない関数(subprocess.run(shell=False)等)を使用するか、OSコマンド呼び出し自体を設計から排除することが最善の対策です。
各攻撃と対策の対応:OSコマンドインジェクション→シェル機能を使わない、SQLインジェクション→プレースホルダ、パストラバーサル→ディレクトリチェック、バッファオーバーフロー→メモリ安全な言語。混同しないよう整理する。