ホームページ  >  記事  >  バックエンド開発  >  直接ファイル パスを公開せずに、Django でダウンロード可能なファイルを安全に提供するにはどうすればよいですか?

直接ファイル パスを公開せずに、Django でダウンロード可能なファイルを安全に提供するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-21 06:31:08329ブラウズ

How to Securely Serve Downloadable Files in Django Without Exposing Direct File Paths?

Django でダウンロード可能なファイルを提供する

質問:

Django が直接ダウンロードを隠しながらダウンロード可能なファイルを安全に提供するにはどうすればよいですかパス?

答え:

Django は、ダウンロード可能なファイルの提供を直接サポートしていません。この機能を実装するには、次のアプローチを検討してください。

xsendfile モジュールの使用

長所:

  • 組み合わせサーバーによって生成されたファイル パスと、提供されるファイルApache/Lighttpd。
  • ファイル パスを隠すことでセキュリティを強化します。

実装:

from django.utils.encoding import smart_str
from django.http import HttpResponse

def download_view(request):
    file_path = '/home/user/files/somefile.txt'
    file_name = 'somefile.txt'

    response = HttpResponse(content_type='application/force-download')
    response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name)
    response['X-Sendfile'] = smart_str(file_path)

    return response

注: このアプローチでは、mod_xsendfile が有効になっている必要があります。 server.

結論:

xsendfile モジュールを利用すると、元の場所への直接アクセスを防ぎながら、ダウンロード可能なファイルを Django で安全に提供できます。このアプローチでは、ファイルのダウンロード処理におけるセキュリティと柔軟性の両方が提供されます。

以上が直接ファイル パスを公開せずに、Django でダウンロード可能なファイルを安全に提供するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。