先日、うちの社員がとあるプログラムをデバッグ中に発見してくれた特大バグがあったんだけども、それはここ10年位は見たこともないくらい久しぶりに見た著名なやつで、その名もOS コマンド・インジェクションというもの。
どんなものかはIPAのサイトに書かれているのでそちらを見てもらうとして、普通シェルのコマンドラインに入力されたデータをそのまんま流すなんて考えられないんですが・・・やる人は居ますので気を付けましょう。
基本コマンドラインにユーザが入力したデータを流すのはエスケープしたりしてても大変危険です。
その久しぶりに見たやつは、echoのコマンドラインにユーザが入力した文字列を何も検査せすに渡していたので &の後に書かれたOSコマンドがそのまんま実行されるというものでした。恐ろしや。
シェルスクリプトで使うために環境変数に入れるもの危険です。
どうしても、環境変数に入れるならシェルスクリプトを起動する前にシェル以外のプログラムで入れときましょう。