-1

PHP アプリケーションを介してファイル システム操作を安全に行うためのベスト プラクティス、モジュールなどを探しています。CMS のようなアプリケーションはデータベースを使用しませんが、代わりにマークダウン ファイルがフォルダーに配置され、表示時に処理されます。したがって、ファイルの移動、ファイルの名前変更、ファイルへの書き込みなど、多くの作業が発生します。

そのようなアクション、入力サニタイズ、ファイルの移動を管理するのに役立ついくつかのライブラリ (たとえば、ORM に相当するもの) を探しています。ゼロから始めるのではなく。このようなものが利用できない場合は、ベスト プラクティスなどのリストを希望します。

これまでのところ、PHP.net からのガイダンスしか見つかりませんでした。

詳細情報: Staceyの上にある Web ベースのエンドユーザー インターフェイスを構築する計画です。エンド ユーザー インターフェイスを備えたテスト環境を用意し、変更の準備が整ったら、運用環境に同期します。これは非 DB ベースのシステムです。Stacey は、開発者の観点から管理および操作するのに便利ですが、ユーザーはマークダウンやファイルの移動などを直接操作したくありません。

また、回答は PHP の問題に限定してください。サーバーのchrootやロックダウンなどのサーバーのことは、ユーザーの個々の環境とニーズに依存します。開発の観点から、私は分散コードの保護に集中したいと考えています。

4

1 に答える 1

0

これを行う特定のライブラリについては知りません.PHPのファイルシステムサポートは広範であるため、なぜそれらが必要なのかわかりません. 既存の CMS から始めて、必要に応じて変更する方がよいかもしれませんが、それが不可能な場合があることは理解しています。また、データベースを使用する必要があるようなことのようにも聞こえますが、それは既にご存知だと思います。

正確なベスト プラクティスを知っているとは言えませんが、これはより一般的なアドバイスです。

まず、Web サーバー、つまり PHP スクリプトが特定のユーザーとして実行されます。これは、構成と特定のサーバー、および基盤となる OS によって異なります。理想的には、このユーザーがストレージとして使用しているファイルシステム領域にのみアクセスできるようにする必要があります。本当に必要な場所 (スクリプトなど) への読み取りアクセスと、ストレージ領域への読み取り/書き込み以外の場所へのすべてのアクセスを拒否します。これを行う正確な方法は、システムによって異なります。

それはあなたの最後の防衛線です。頼りにしないでください。セーフティネットとしてそこにあります。

ファイルの名前変更、移動、変更が行われる正確な原因は明らかではありませんが、ユーザー入力によるものであることに間違いはありません。../../index.phpしたがって、すべてのユーザー入力を確実にサニタイズする必要があります。ページ名が必要なファイル名になった場合、ページ名として入力してメインサイトを核攻撃させたくない.

常に最悪のケースを想定してください。つまり、システムの内部をよく知っていて、ほとんどの損害を与えようとしているユーザーです。「あいまいさによるセキュリティ」や「誰もそんなことはしないだろう」に頼らないでください。

私がやろうとしていること (そして以前にやったことがあること) は 2 つあります。最初に、すべてのファイルシステム関数を、メソッドと同じ関数を提供するクラスにラップします。このクラスの仕事は、何が起こっても許可されていることを確認することです。つまり、おそらくパスとファイル名を読み取って、変更の場所を特定する必要があります。

次に、悪意のある可能性のあるすべてのユーザー入力を、最初に受信したときにサニタイズします。escapeshellarg入力内容に応じて、URL エンコーディングの使用、またはその他の方法を検討することをお勧めします。

また、ファイルが実行時に処理されることにも言及しています。ユーザーがスクリプトを作成することを許可されている場合 (または実行される PHP がさらに悪い場合)、さらに多くの問題が発生し、根本的な問題が発生する可能性があります。しかし、それはあなたの質問からは明らかではありません。

それが役立つことを願っています。

于 2013-08-01T01:26:47.230 に答える