奇特なブログ

「殊勝に値する行いや心掛け」を意味する、奇特な人になる為のブログです

任意のPHPファイルをサーバー上をアップロードする際のセキュリティ上の懸念点

追記(普通は末尾に書くんでしょうけど)

以下の質問ですが、リンク先のPHPプロの方でも打ち切らせて頂いたので、
こちらでも、打ち切らせていただきます。
ご意見頂いた方々、どうもありがとうございました。

結論だけ書いておきますと、「サーバーに任意のPHPファイルをアップロード出来る」というのは、
やはり「危ない」ということで、Webサービスとしての展開は止めようと思います。
やるとしたら、クライアント側で解析してサーバー側では結果だけ表示とかですかね。
これはこれで、別の問題がありそうですけど。

以上です。

---------------------------------------------------------------------------------------------

今回は、いつもと違う感じの記事でして「質問」です。
実は、ココ http://www.phppro.jp/qa/4385 とか、
色々な所で同じ質問をさせて頂いてたりしてまして、まぁ「マルチポスト」なんでしょうけど、
僕の場合、そもそも質問をしても返答が無いケースも多く、それでこうする事にしました。
きちんと「管理」はしますので、教えていただければ幸いです。

以下が、質問の本文です。
PHP、セキュリティ、Webサービスに詳しい方、是非ともご意見を頂ければ幸いです。
コメント欄やツイッターなどでも構いませんので。

---------------------------------------------------------------------------------------------

現在、こちら http://d.hatena.ne.jp/gallu/20140812/p1 の記事などを見まして、
「発受注者双方にとって、システムの質を計る為の参考の一つ」となる為の、
PHPソースコード診断ツールを作っています。
Webサービスでの提供を検討しています。

そして、検討を始めて思ったのですが、
PHPソースコードを診断するということは、
PHPソースコードを解析する必要がありまして、
そして、解析する為には、
PHPソースコードが書かれているファイルの内容を取得する必要があると思いました。
そして、Webサービスとして考えますと、
Webサーバー上にPHPファイルをアップロードしてファイルの内容を取得する(クライアント側で出来なくもないでしょうが、出来ればサーバー側でしたいです)必要があると思ったのですが、
そうすると、「任意」のPHPファイルがアップロードされるケースがあります。
ファイルの内容を取得する(file_get_contentsなど)なら、基本的には問題ないと思っていますが、
PHPファイルが読み込まれる(requireなど)だと、
ソースコードの内容次第ではセキュリティ的に悪い事が出来ると思いました。
あるいは、ファイルの内容を取得するだけでも、
「一時的」には、PHPファイルをサーバーに上げる必要があるので、
診断解析するプログラム上では問題無くても、
シェルコマンドインジェクションで、外部からアップロードされた任意のPHPファイルを実行されれば同じだと思いました。

以下で、質問をまとめさせて頂きます。

Q1.ファイルの内容を取得(file_get_contentsなど)する方法なら、セキュリティの問題は発生しないと思いますが、いかがでしょうか?

Q2.上記のシェルコマンドインジェクションについては、「サーバー内の全PHPファイルでジェルコマンドインジェクションの恐れがない」事を確認すれば良いと思っていますが、
いかがでしょうか?

Q3.ディレクトリトラバーサルと上記シェルコマンドインジェクションを除き、他にセキュリティ面での懸念はどういったものが考えられますでしょうか?

質問に回答するにあたり他に必要な情報がありましたら、その旨を回答していただければと思います。

それでは、どうぞよろしくお願い致します。

---------------------------------------------------------------------------------------------