Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 10873|Răspunde: 0

[Web] Controlează accesul la fișiere folosind mecanismul X-Sendfile al Nginx (versiunea php)

[Copiază linkul]
Postat pe 07.11.2018 10:05:15 | | |
BBS sau site-urile web au adesea doar permisiunea de a vedea această pagină sau de a descărca această resursă; acum câteva zile am vizitat serverul nginx folosind x-sendfile.

1. Ce este X-Sendfile?

X-Sendfile este un mecanism care retransmite cererile de descărcare de fișiere de la aplicația backend către serverul web front-end pentru procesare, ceea ce poate îmbunătăți semnificativ eficiența serverului prin eliminarea presiunii programului back-end de a citi și procesa fișierul pentru a procesa trimiterea, mai ales în cazul descărcărilor mari de fișiere.

X-Sendfile este implementat printr-un antet HTTP specific: specificând adresa unui fișier din antetul X-Sendfile pentru a fi promovat către serverul web front-end. Când serverul web detectează acest antet trimis de backend, ignoră celelalte ieșiri de la backend și folosește propriile componente (inclusiv optimizări precum antete de cache și reconectări prin puncte de întrerupere) pentru a trimite fișierul către utilizator.

Totuși, înainte de a folosi X-Sendfile, este important să înțelegem că aceasta nu este o funcție standard și este dezactivată implicit de majoritatea serverelor web. Serverele web diferite au implementări diferite, inclusiv formate diferite de antete X-Sendfile. Dacă este configurat greșit, utilizatorii pot descărca un fișier de 0 octet.

Folosirea X-Sendfile permite descărcarea fișierelor din directoare non-web (de exemplu /root/) chiar dacă fișierul este dezactivat sub protecția .htaccess.

Servere web diferite implementează antete HTTP diferite

Antet SENDFILE
Server WEB folosit
X-SendfileApache, Lighttpd v1.5, Cherokee
X-LIGHTTPD-send-fileLighttpd v1.4
X-Accel-RedirecționareNginx, Cherokee

Dezavantajul folosirii X-SendFile este că pierzi controlul asupra mecanismului de transfer al fișierelor. De exemplu, dacă doriți să realizați anumite acțiuni după descărcarea unui fișier, cum ar fi permițând utilizatorului să descarce fișierul o singură dată, acest X-Sendfile nu va putea face acest lucru deoarece scriptul php din fundal nu știe dacă descărcarea este reușită.

2. Cum să folosești NGINX?

Nginx suportă această funcție implicit și nu necesită încărcarea unor module suplimentare. Doar că implementarea este puțin diferită, iar antetul HTTP care trebuie trimis este X-Accel-Redirect. În plus, trebuie să faci următoarele setări în fișierul de configurare

intern înseamnă că această cale poate fi accesată doar în Nginx și nu poate fi accesată direct de browser pentru a preveni descărcările neautorizate.

3. Cum să folosești programele PHP?


Dacă adaugi antetul X-Accel-Redirect, utilizatorul va descărca fișierul sub ruta /game. Controlul nostru de permisiuni pentru fișiere este implementat.

Introducere în documentația oficială:Autentificarea cu hyperlink este vizibilă.




Precedent:Dragoste, căsătorie și familie, prima jumătate a lunii + 18 iunie
Următor:CF este prima perspectivă asupra întregii rețele care se auto-țintește și se stabilizează timp de o lună
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com