Maison  >  Article  >  développement back-end  >  Comment servir en toute sécurité des fichiers téléchargeables dans Django sans exposer les chemins de fichiers directs ?

Comment servir en toute sécurité des fichiers téléchargeables dans Django sans exposer les chemins de fichiers directs ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-21 06:31:08329parcourir

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

Servir des fichiers téléchargeables dans Django

Question :

Comment Django peut-il servir des fichiers téléchargeables en toute sécurité tout en masquant leur téléchargement direct chemins ?

Réponse :

Django ne prend pas directement en charge la diffusion de fichiers téléchargeables. Pour implémenter cette fonctionnalité, envisagez l'approche suivante :

Utilisation du module xsendfile

Avantages :

  • Combine chemins de fichiers générés par le serveur avec service de fichiers par Apache/Lighttpd.
  • Améliore la sécurité en obscurcissant les chemins de fichiers.

Mise en œuvre :

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

Remarque : Cette approche nécessite que mod_xsendfile soit activé sur votre serveur.

Conclusion :

En utilisant le module xsendfile, vous pouvez servir en toute sécurité des fichiers téléchargeables dans Django tout en empêchant l'accès direct à leurs emplacements d'origine. Cette approche offre à la fois sécurité et flexibilité dans la gestion des téléchargements de fichiers.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn