[PHP-users 12048] Re: シェルコマンドは使わない方がいい?

橋端 博士 php-users@php.gr.jp
Thu, 5 Dec 2002 22:57:19 +0900


BAC様

シェルでコマンドを実行するとリターンコードが返りますが、
それによるエラー処理を実装しないと、信頼性は高まらない。
PHPに置き換えても、同様であるということですね。
よく分かりました。

シェルに渡すパスは具体的にはApache以下のパス(固定)+ユーザーPC固有の文字列
をMD5暗号化したパスとなります。
/public_html/user_dir/XXXXYYYY(英数字)
固有の文字列はユーザー入力ではなく、PC内のチップから自動的に取得しますので
ユーザーの介入はありません。

>  あと、言うまでもないですが、ユーザ側の操作によってシェルコマンドを発行
> する場合の文字列に意図的な文字列を入れることができる場合は大きなセキュリ
> ティホールとなります。`を利用して上記のトロイを作成することも場合によっ
> ては可能です。

これは日ごろから気をつけてはおりますが、言われて再認識いたしました。
今回はシェルコマンドをユーザーに入力させることは行っておりません。

>  外部プログラムを発行するとPHPの枠外の要素が多くなるので、作成者の意図
> しない動作を回避するためにも、可能であればPHP関数で処理すべきでしょう。

Linuxはマルチユーザ対応のため、基本コマンドは重複起動されても影響はないと存
じております。
またコマンドが参照するディレクトについても、一人のユーザーから他のユーザーに
影響を及ぼさないよう、固有の文字列をさらにMD5で暗号化しました。
これで確実にコマンドが実行できるだろうが、他に要因があるか不安になって質問さ
せていただきました。
しかし信頼性のあるシステムというのは、方法を問わずエラー処理こそ重要なのです
ね。
確実ということはないと。

現状ではシェルコマンドのリターンコードで信頼性を高めたいと思いますが
不安要素を減らす意味で、その後時間の許す限りPHP化をしたいと思います。

とても分かりやすい説明で、本当に感謝いたします。ありがとうございました。

みつき@so-net