Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 10873|Risposta: 0

[Web] Controlla l'accesso ai file utilizzando il meccanismo X-Sendfile di Nginx (versione php)

[Copiato link]
Pubblicato su 07/11/2018 10:05:15 | | |
BBS o siti web spesso hanno solo il permesso di vedere questa pagina o scaricare questa risorsa; qualche giorno fa ho visitato il server nginx come implementare questo controllo file, usando x-sendfile.

1. Cos'è X-Sendfile?

X-Sendfile è un meccanismo che riporta le richieste di download di file dall'applicazione backend al server web front-end per l'elaborazione, il che può migliorare significativamente l'efficienza del server rimuovendo la pressione del programma back-end per leggere e processare il file per elaborare l'invio, specialmente quando si tratta di download di file di grandi dimensioni.

X-Sendfile è implementato tramite un'intestazione HTTP specifica: specifica l'indirizzo di un file nell'intestazione X-Sendfile da pubblicizzare al server web front-end. Quando il server web rileva questa intestazione inviata dal backend, ignora altri output dal backend e utilizza i propri componenti (inclusi ottimizzazioni come le intestazioni della cache e le riconnessioni dei breakpoint) per inviare il file all'utente.

Tuttavia, prima di usare X-Sendfile, è importante capire che questa non è una funzione standard ed è disabilitata dalla maggior parte dei server web di default. Diversi server web hanno implementazioni differenti, inclusi diversi formati di header X-Sendfile. Se configurati male, gli utenti possono scaricare un file da 0 byte.

L'uso di X-Sendfile permetterà di scaricare file in directory non web (ad esempio /root/) anche se il file è disabilitato sotto la protezione .htaccess.

Server web diversi implementano header HTTP differenti

Intestazione SENDFILE
Server WEB utilizzato
X-SendfileApache, Lighttpd v1.5, Cherokee
X-LIGHTTPD-send-fileLighttpd v1.4
X-Accel-RedirectNginx, Cherokee

Lo svantaggio di usare X-SendFile è che perdi il controllo del meccanismo di trasferimento dei file. Ad esempio, se vuoi eseguire certe azioni dopo aver scaricato un file, come permettere all'utente di scaricare il file solo una volta, questo X-Sendfile non potrà farlo perché lo script php in background non sa se il download è riuscito.

2. Come usare NGINX?

Nginx supporta questa funzione di default e non richiede il caricamento di moduli aggiuntivi. È solo che l'implementazione è un po' diversa, e l'intestazione HTTP da inviare è X-Accel-Redirect. Inoltre, devi impostare le seguenti impostazioni nel file di configurazione

interno significa che questo percorso può essere accessibile solo all'interno di Nginx e non può essere accessibile direttamente dal browser per prevenire download non autorizzati.

3. Come utilizzare i programmi PHP?


Se aggiungi l'intestazione X-Accel-Redirect, l'utente scaricherà il file sotto il percorso /game. Il nostro controllo dei permessi file è implementato.

Introduzione alla documentazione ufficiale:Il login del link ipertestuale è visibile.




Precedente:Amore, matrimonio e famiglia, prima metà del mese + 18 giugno
Prossimo:La CF è la prima prospettiva sull'intera rete a mirare e stabilizzarsi per un mese
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com