Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 10873|Répondre: 0

[Web] Contrôle l’accès aux fichiers en utilisant le mécanisme X-Sendfile de Nginx (version php)

[Copié le lien]
Publié sur 07/11/2018 10:05:15 | | |
Les BBS ou les sites web ont souvent seulement la permission de voir cette page, ou de télécharger cette ressource, il y a quelques jours j’ai visité le serveur nginx comment implémenter ce contrôle de fichier, en utilisant x-sendfile.

1. Qu’est-ce que X-Sendfile ?

X-Sendfile est un mécanisme qui relaie les requêtes de téléchargement de fichiers de l’application backend vers le serveur web front-end pour traitement, ce qui peut considérablement améliorer l’efficacité du serveur en éliminant la pression du programme back-end pour lire et traiter le fichier afin de traiter l’envoi, en particulier lors de gros téléchargements de fichiers.

X-Sendfile est implémenté via un en-tête HTTP spécifique : spécifiant l’adresse d’un fichier dans l’en-tête X-Sendfile à annoncer auprès du serveur web front-end. Lorsque le serveur web détecte cet en-tête envoyé par le backend, il ignore les autres sorties du backend et utilise ses propres composants (y compris des optimisations telles que les en-têtes de cache et les reconnexions de points d’arrêt) pour envoyer le fichier à l’utilisateur.

Cependant, avant d’utiliser X-Sendfile, il est important de comprendre que ce n’est pas une fonctionnalité standard et que la plupart des serveurs web désactivent par défaut. Différents serveurs web ont des implémentations différentes, y compris différents formats d’en-tête X-Sendfile. En cas de mauvaise configuration, les utilisateurs peuvent télécharger un fichier de 0 octet.

L’utilisation de X-Sendfile permet de télécharger des fichiers dans des répertoires non web (par exemple /root/) même si le fichier est désactivé sous la protection .htaccess.

Différents serveurs web implémentent différents en-têtes HTTP

En-tête SENDFILE
Serveur WEB utilisé
X-SendfileApache, Lighttpd v1.5, Cherokee
X-LIGHTTPD-send-fileLighttpd v1.4
X-Accel-RedirectionNginx, Cherokee

L’inconvénient d’utiliser X-SendFile est que vous perdez le contrôle du mécanisme de transfert de fichiers. Par exemple, si vous souhaitez effectuer certaines actions après avoir téléchargé un fichier, comme permettre à l’utilisateur de télécharger le fichier une seule fois, ce fichier X-Sendfile ne pourra pas le faire car le script php en arrière-plan ne sait pas si le téléchargement est réussi.

2. Comment utiliser NGINX ?

Nginx prend en charge cette fonctionnalité par défaut et ne nécessite pas de chargement de modules supplémentaires. C’est juste que l’implémentation est un peu différente, et l’en-tête HTTP à envoyer est X-Accel-Redirect. De plus, vous devez configurer les paramètres suivants dans le fichier de configuration

interne signifie que ce chemin ne peut être accessible que dans Nginx et ne peut pas être accessible directement par le navigateur afin d’éviter tout téléchargement non autorisé.

3. Comment utiliser les programmes PHP ?


Si vous ajoutez l’en-tête X-Accel-Redirect, l’utilisateur téléchargera le fichier sous le chemin /game. Notre contrôle des permissions de fichiers est implémenté.

Introduction officielle de la documentation :La connexion hyperlientérée est visible.




Précédent:Amour, mariage et famille, première moitié du mois + 18 juin
Prochain:La CF est la première perspective sur l’ensemble du réseau à se concentrer et à se stabiliser pendant un mois
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com