このタイプの脆弱性は主に、ユーザーが渡したパス名を読み取り、誤ったフィルタリング方法を使用する可能性があり、悪意のあるユーザーが予期しない場所にファイルを保存してセキュリティ リスクを引き起こす可能性があります。
実際には、最初にいくつかの場所に注目する必要があります。ユーザーはファイルを保存したいと考えており、ファイルの内容にはユーザーの入力形式と一致しないものもあります。ファイルはユーザーの入力形式と一致していない可能性があります。コンテンツにはトロイの木馬コードも含まれています。 次に、ユーザーがファイルを保存し、サイト ファイルとは別に認証して、分離を実装できるようにします。
保存ディレクトリとアップロードディレクトリを独立させます。ディレクトリの権限は読み取り専用であり、実行できません。
どのファイルを最後に実行しても、このステップは実行されません。たとえテストを行わなかったとしても、すべてのファイルがここに保存されていれば、システムにセキュリティ上のリスクが生じることはありません。 (ユーザーのウェブサイトに反動的な言葉を含む画像が保存されている場合は、別途対処する必要があります)
値を渡すためにサーバーを直接使用しないでください。すべてをテストする必要があります
この種のものはすべての入力は有害であるという原則と同じように、クライアントから渡された型と名前は判断され、直接使用されるべきではありません。特定のディレクトリと特定のファイル名が生成される場合。
ファイル名を使用する最善の方法は、ディレクトリを自分でハードコーディングすることです (受信ディレクトリを読み取らないでください)。ユーザーのファイル名を読み取らずに、自分でファイル名をランダムに生成するのが最善です。ファイル拡張子は、右端の「.」に続く文字です。
上記の 2 つの方法は、2 つの側面からストレージに全体的な制約を課すだけです。
方法 2: ファイル名を保存し、指定したディレクトリに書き込み、ファイル名を自分で生成します。
方法 1: ファイルが正しい場所に書き込まれていることを確認してから、書き込みディレクトリにアクセス許可制御を構成します。これが根本的な原因です。どのようなファイルを保存しても、それを実行する権限はありません。
上記の 2 つの方法を一緒に使用すると、ファイルが正しい場所に保存され、アクセス許可を制御できるようになります。 ちなみに、ユーザーが保存したファイルが必要な形式を満たしているかどうかは、ファイルの拡張子を直接チェックして、拡張子が満たされていれば保存が許可されます。 とにかく、実行許可制限が設けられているので、必要に応じてコンテンツをアップロードしなくても問題ありません。 いずれにせよ、実装できなくてもそれほど害はありません。
正しい手順:
1. ファイル名を読み取り、拡張子が範囲内であるかどうかを確認します。
2. 生成されたファイル名、ディレクトリ、および拡張子をファイル名拡張子から取得して定義します。 他のすべての値は自分で設定し、上部ストレージの内容は読み取られません。 3. ファイルを新しいディレクトリに移動します (このディレクトリのアクセス許可は読み取り専用に設定されています)。一般的な操作方法が皆さんのお役に立てば幸いです。友達同士のコミュニケーションも大歓迎です。また、より良い方法を提供したいと思っています。次に、Web 開発におけるいくつかの一般的な手法の機能安全設計に関する私の経験と意見を書き続けます。