Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 10873|Jawab: 0

[Situs web] Kontrol akses file menggunakan mekanisme X-Sendfile Nginx (versi php)

[Salin tautan]
Diposting pada 07/11/2018 10.05.15 | | |
BBS atau situs web seringkali hanya memiliki izin untuk melihat halaman ini, atau mengunduh sumber daya ini, beberapa hari yang lalu saya mengunjungi server nginx cara mengimplementasikan kontrol file ini, menggunakan x-sendfile.

1. Apa itu X-Sendfile?

X-Sendfile adalah mekanisme yang menyampaikan permintaan pengunduhan file dari aplikasi backend ke server web front-end untuk diproses, yang secara signifikan dapat meningkatkan efisiensi server dengan menghilangkan tekanan program back-end untuk membaca dan memproses file untuk memproses pengiriman, terutama saat berhadapan dengan unduhan file besar.

X-Sendfile diimplementasikan melalui header HTTP tertentu: menentukan alamat file di header X-Sendfile untuk diiklankan ke server web front-end. Ketika server web mendeteksi header yang dikirim oleh backend ini, server web mengabaikan output lain dari backend dan menggunakan komponennya sendiri (termasuk pengoptimalan seperti header cache dan koneksi ulang titik henti) untuk mengirim file ke pengguna.

Namun, sebelum menggunakan X-Sendfile, penting untuk dipahami bahwa ini bukan fitur standar dan dinonaktifkan oleh sebagian besar server web secara default. Server web yang berbeda memiliki implementasi yang berbeda, termasuk format header X-Sendfile yang berbeda. Jika salah konfigurasi, pengguna dapat mengunduh file 0 byte.

Menggunakan X-Sendfile akan memungkinkan pengunduhan file di direktori non-web (misalnya /root/) bahkan jika file dinonaktifkan di bawah perlindungan .htaccess.

Server web yang berbeda menerapkan header HTTP yang berbeda

Header SENDFILE
WEB server yang digunakan
X-SendfileApache, Lighttpd v1.5, Cherokee
X-LIGHTTPD-send-fileLighttpd v1.4
Pengalihan X-AccelNginx, Cherokee

Kelemahan menggunakan X-SendFile adalah Anda kehilangan kendali atas mekanisme transfer file. Misalnya, jika Anda ingin melakukan tindakan tertentu setelah mengunduh file, seperti mengizinkan pengguna mengunduh file hanya sekali, X-Sendfile ini tidak akan dapat melakukannya karena skrip php di latar belakang tidak tahu apakah pengunduhan berhasil.

2. Bagaimana cara menggunakan NGINX?

Nginx mendukung fitur ini secara default dan tidak memerlukan modul tambahan untuk dimuat. Hanya saja implementasinya sedikit berbeda, dan header HTTP yang perlu dikirim adalah X-Accel-Redirect. Selain itu, Anda perlu membuat pengaturan berikut dalam file konfigurasi

internal berarti bahwa jalur ini hanya dapat diakses di dalam Nginx dan tidak dapat diakses langsung oleh browser untuk mencegah unduhan yang tidak sah.

3. Bagaimana cara menggunakan program PHP?


Jika Anda menambahkan header X-Accel-Redirect, pengguna akan mengunduh file di bawah jalur /game. Kontrol izin file kami diterapkan.

Pengenalan dokumentasi resmi:Login hyperlink terlihat.




Mantan:Cinta, pernikahan dan keluarga, paruh pertama bulan + 18 Juni
Depan:CF adalah perspektif pertama di seluruh jaringan untuk membidik diri dan stabil selama satu bulan
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com