1

フォルダー (/files) があり、ユーザーがダウンロードできるファイルがたくさんあります。ユーザーが自分のファイルのみをダウンロードできるようにし、他の人のファイルを見ることができないようにしたい.

例えば:

ユーザー A は、表示とダウンロードのみ可能です。

- file1.doc
- file2.jpg

ユーザー B は、表示とダウンロードのみ可能です。

- file3.txt
- file4.jpeg

ユーザー C は、表示とダウンロードのみ可能です。

- file1.doc
- file2.jpg
- file3.txt

私の考えは、すべてのファイルを同じフォルダーに配置して、すべてのユーザーがどこに行くべきかを知ることでした。私の質問は: .htaccess を使用できますか、それとも PHP スクリプトを作成する必要がありますか? セキュリティはどうですか(どちらがより安全ですか)?

ありがとう

4

3 に答える 3

4

そもそも、それはオープンディレクトリですか?できることは、ユーザーごとにサブフォルダーを作成し、そこにファイルを配置してから、そのフォルダーの.htaccessに適切なアクセス許可を割り当てることです。ただし、これにはOSとのセキュリティ統合が必要になります(つまり、ユーザーはWebアプリケーションだけでなく、マシンにアカウントを持っている必要があります)。ユーザー名を持つファイル名(たとえば、「foobar」によってアップロードされた「file1.jpg」は「foobar.file1.jpg」という名前にすることができます)、それはそれぞれのユーザー名とおそらく、表示時にその部分を取り除きます(または、スクリプトがユーザーごとに新しいフォルダーを作成できる限り、フォルダーが存在しない場合はフォルダーを使用できます)。もう少し安全なのは、データベースにファイルとユーザー名のハッシュを作成し、アップロードされたすべてのファイルの名前をこのハッシュで変更してから、データベースに適切にクエリを実行することです。

最善の解決策は間違いなくOSで管理されたアカウントであり、私が最初に述べたように、それはより多くのオーバーヘッドを伴います。

于 2011-09-28T17:43:42.883 に答える
1

readfileを使用してファイルをブラウザーに送信する PHP スクリプトを作成します。このようにして、個々のファイルへのアクセスを制限し、既存の認証システムを使用できます。

于 2011-09-28T17:37:42.747 に答える
0

あなたは確かにこれのためにhtaccessかPHPのどちらかを使うことができます。私の知る限り、どちらも安全ではありません。どちらも間違って行われたとしても、意図されていない場所へのアクセスを許可する可能性があります。

PHPの方が柔軟性が高く(たとえば、他のPHP認証と統合するという点で)、フォルダーを通常のWebルートの外に置くことができるため、PHPの方がわずかに優れている可能性があります。これはとにかく良い習慣です。

于 2011-09-28T17:44:29.347 に答える