web-dev-qa-db-ja.com

認証されたユーザーだけが見ることができるURLを保護することによってファイルをプライベートにする方法

認証されていないときに非表示にする画像やファイルを保護する方法があるかどうか疑問に思っていました。

私のWebサイトに、そのユーザーが認証されている場合にのみ表示できる画像があるとします。ただし、URLをコピーするか、新しいタブで画像を開くことができます。

http://siteis.com/media/uploaded_files/1421499811_82_Chrysanthemum.jpg

また、私が認証されていなくても、そのURLにアクセスすることで特定の画像を表示できます。だから、私の質問は、または私の問題は、どのようにファイルを保護して、認証されたユーザーだけが見えるようにするかです。はっきりしているといいのですが、わからない場合は質問してください。あなたが私を助けることができれば私は本当に感謝します。そして、可能であればPythonic/Djangoの方法で。

5
Robin

1つの解決策は、機密ファイルが保存されているフォルダーへのアクセスを禁止することです。これにより、機密ファイルに直接アクセスすることができなくなります。たとえば、これらのファイルを http://siteis.com/secured_uploaded_files/ に配置し、そこに.htaccessファイル(Apacheの場合)を配置して、アクセスを防止します。また、ファイルをWebサーバーのドキュメントルートの外部に配置することもできます。

ステップ2では、次の動作のコードを記述します。

URL: http://siteis.com/getfile?id= {long_random_identifier}

上記のURLにアクセスすると、サーバーは、ユーザーが認証され、特定の識別子で識別されるリソースへのアクセスを承認されているかどうかを確認します。チェックが成功した場合は、サーバー側のコードを使用してその場所からファイルを読み取り、応答でストリーミングします。

5
Dinu