2

渡されたファイル パスがディスクに書き込まれ、新しいディレクトリ構造が作成される前に、そのパスを検証する必要があります。たとえば、 があり$path = "/uploads/base/../../user_new_dir/img.jpg"ます。これは間違ったパスです-"/.." ("/uploads/base"ディレクトリの保存が許可されて"/user_new_dir/img.jpg"いる - ユーザー定義のパスとファイル名)。

realpath($path)は既存のファイルでしか機能しないため、使用できません。realpath(dirname($path))ファイルを保存するために新しいフォルダーを作成する可能性があるため、使用できません。

考えられるすべてのケースをチェックするスクリプトを探します。文字のマルチバイト表現'.'やその他の予期しない方法を見逃す可能性があり、セキュリティ上の問題が発生する可能性があるのではないかと心配しています。任意のフレームワークまたは cms での私のタスクの適切な実装についてアドバイスをいただけないでしょうか。

4

1 に答える 1

2

これをチェックしてください:https://stackoverflow.com/a/4050444/108544

この関数はパス文字列で動作し、ターゲット パスが実際にはファイル システムに存在しない場合にも動作するはずです。

于 2013-01-13T04:02:47.320 に答える