2012-02-11 8 views
6

私は、ユーザーがPHPを使用してアプリケーションを作成できるプラットフォームを開発しています。ユーザーにこれを許可する安全な方法はありますか?とにかく既存のソースコードやサーバーに損害を与える可能性のある機能の使用を制限できますか?私は基本的な機能を使い、1つのデータベースにアクセスできるようにしたいだけです。共有サーバーが存在し、多くのユーザーが実行するため、これが可能でなければなりません。 ...ユーザーが自分のPHPを自分のサーバーに追加できるようにする安全な方法はありますか?

アドバイスはありますか?

答えて

3

php.iniに無効な機能をすべて表示することができます。あなたはすべての仮想ホストに対して異なった設定をすることができます

disable_functions = "exec,passthru" 

共有ホスティングは上記と同じように動作しています。ディアブルに考えることができる

その他の機能: のReadFile、fopenを、fsockopenの、popenの、のfile_get_contentsとして、stream_context_create、chmodコマンド、chownコマンド

完全なリストはhere

を見つけることができますしかし、あなたが使用している場合あなたのコードの中のこれらの関数もまた、すべてのコードファイルを読んだり読んだりしてapacheのユーザにするか、この場合はchownとchmodを無効にして大きな役割を果たすのが良いでしょう。

+1

これもvhostの設定で行うことができます。 – remy

+0

@remy良いキャッチ。編集 –

+0

evalを無効にする際のポイントは何ですか? –

1

私はPHP safe modeを使用して共有サーバーを実行していましたが、明らかに廃止されました。

より良い解決策は、異なるユーザーアカウントで、chroot jailで各ユーザーのPHPプロセスを実行し、OSがセキュリティを心配させることです。ユーザーは任意のコードをアップロードして実行することができますが、適切にサンドボックス化されている限り、多くの害を及ぼすことはできません。

ディスククォータを使用することもできます。ユーザーごとのメモリ使用量にulimitsを使用し、ネットワーク接続(受信および送信)を禁止することを検討してください。

データベースの場合は、データベースを1つのデータベースに設定し、自分のデータベースにのみアクセスし、より多くのデータベースを作成する権限を与えないでください。

3

これまでにこれをしたことはありませんでしたが、このアプローチは安全で安全な環境でお手伝いできると思います。

あなたがubuntu(debianベース)にいる場合は、jailed chrootを作成することをお勧めします。リンク

からchroot環境は基本的にそのディレクトリ内から実行する場合 は、ディレクトリ外 アクセスファイルから、アプリケーションを防ぎ、コンピュータ上の特別なディレクトリです。多くの点で、chrootは、 の既存オペレーティングシステム内に別のオペレーティングシステムをインストールするようなものです。

また、chrootディレクトリの内部から実行されるアプリケーションで使用する必要があるPHPの専用インスタンスもインストールする必要があります。

あなたは、これはあなたが実際に必要な正確に何であるなど

...、 "max_execution_timeに"、 "disable_functions" であなたのphp.iniを設定することができます。

関連する問題