7.4. プログラマ向けのインタフェースだけを呼び出す

プログラム向けに用意されているアプリケーション・プログラミング・インタフェース (API)だけを呼び出すようにしてください。 通常プログラムは他のプログラムを呼び出します。これには、実際に人とやり取り するように設計されたプログラムも含まれます。 しかしプログラムを呼び出すのに、人がやり取りするようにプログラムを設計するの では十分ではありません。 プログラムのヒューマン・インタフェースがことさら機能豊富であるが故に、 完璧に制御するのが困難になっている点が問題になります。 Section 7.3 で論じたように、対話的なプログラムには 「エスケープ」コードがよくあります。こうなると、攻撃者が不適切な機能を実行 できてしまいます。 また、対話的なプログラムは「多分そうだろう」というデフォルトの設定を実行しよう とします。 これが期待しているデフォルトの動作ではないかもしれません。攻撃者は、これに つけ込む手段を見つけるかもしれません。

通常直接呼び出してはいけないプログラムには、mail や mailx、ed、vi、emacs があります。 最低限これらのプログラムの入力をまずチェックしてから、呼び出してください。

通常は安全なアクセスをするために、プログラム機能としてパラメタがあった り、別の API を持っていたり、それらを使わないでプログラム専用のアプリケーション があったりします。 たとえば、テキスト・エディタ(ed や vi、emacs のような)を呼び出してテキスト を編集する代わりに、sed が使えます。