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

Mary-Kate Olsen
Libérer: 2024-11-21 06:31:08
original
329 Les gens l'ont consulté

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal