2

私は PHP と Javascript でアプリケーションを開発しており、特定のユーザーにディスク クォータを設定する必要があります (ユーザーが独自のドキュメント マネージャーを持つことができるように FTP デーモン (この場合は ProFTPd) を使用しているため) elFinder (これは私が現在使用を考えているドキュメントマネージャです)「自由に」実行できます(実際に使用されているスペースの量を制御するために独自の PHP 関数を作成する必要はありません)。

アイデアは、単一のコマンドを実行してサーバー側のディスク クォータを調整することですが、... PHP にシステム コマンドを実行させても安全ですか (パラメーターを受け入れたり、ユーザーとのあらゆる種類の対話を許可したりしなくても)システム)?

4

3 に答える 3

3

通常は安全ではありません。ユーザーがコマンドやその他の種類の対話を送信できるようにするかどうかは問題ではありません。スクリプトが単独で実行される場合でも、エクスプロイトが発明されて何らかの形で使用され、アクションが変更される可能性があります。

ただし、これは、サーバーに非常識なセキュリティ ルールを設定したい場合にのみ適用されます。現実の世界では、サーバーのセキュリティが侵害される可能性は最小限です。

まだいくつか提案があります :

  1. スクリプトが外部からの入力を受け付けないこと、データベースやファイルを読み取らないことを確認してください。すべてをスクリプト内に含める必要があります。

  2. ユーザーがアクセスできないように、スクリプトを documentRoot の外のどこかに置くようにしてください。

  3. スクリプトに特別なアクセス許可を設定して、そのアクションが実行されるユーザーに限定されるようにします。誰かが何らかの方法でそれを壊したとしても、OS は特定の環境でその特定のコマンドだけを実行する以外のことをさせません。

もちろん、これはさらに多くのルールで完了する可能性がありますが、これは今頭に浮かんだことです。それが役に立てば幸い

于 2011-09-30T11:43:08.187 に答える
2

ユーザーに情報を入力させるのは安全ではありません。フィルタリングなしの POST または GET 値。

ユーザーが入力する GET 値を使用する必要がある場合は、escapeshellarg()またはを使用する必要がありますescapeshellcmd()

于 2011-09-30T11:33:46.953 に答える
0

exec()ユーザー入力を取得せず、コマンドを実行する限り、コマンド ラインから実行するのと同じくらい安全に使用できます。コマンドでユーザー入力を使用する場合は、escapeshellarg()orescapeshellcmd()を使用しても安全です。

于 2011-09-30T11:35:25.500 に答える