Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 10873|Odpowiedź: 0

[Web] Kontroluj dostęp do plików za pomocą mechanizmu X-Sendfile firmy Nginx (wersja php)

[Skopiuj link]
Opublikowano 07.11.2018 10:05:15 | | |
BBS lub strony często mają tylko ty masz uprawnienia do zobaczenia tej strony lub pobrania tego zasobu, kilka dni temu odwiedziłem serwer nginx, jak zaimplementować tę kontrolę plików, używając x-sendfile.

1. Czym jest X-Sendfile?

X-Sendfile to mechanizm, który przekazuje żądania pobrania plików z aplikacji backendowej do front-end serwera WWW w celu przetwarzania, co może znacząco poprawić wydajność serwera, eliminując presję programu backendowego na odczyt i przetwarzanie pliku, zwłaszcza przy dużych plikach pobierania.

X-Sendfile jest implementowany za pomocą konkretnego nagłówka HTTP: określającego adres pliku w nagłówku X-Sendfile, aby ogłosić go serwerowi front-endu. Gdy serwer WWW wykryje ten nagłówek wysłany przez backend, ignoruje inne wyjścia z backendu i używa własnych komponentów (w tym optymalizacji, takich jak nagłówki pamięci podręcznej i połączenia breakpointów), aby przesłać plik do użytkownika.

Jednak przed użyciem X-Sendfile ważne jest, aby zrozumieć, że nie jest to standardowa funkcja i jest domyślnie wyłączona przez większość serwerów WWW. Różne serwery WWW mają różne implementacje, w tym różne formaty nagłówków X-Sendfile. Jeśli zostanie źle skonfigurowany, użytkownicy mogą pobrać plik o rozmiarze 0 bajtów.

Użycie X-Sendfile pozwala na pobieranie plików z katalogów nie-webowych (np. /root/), nawet jeśli plik jest wyłączony w ramach ochrony .htaccess.

Różne serwery WWW implementują różne nagłówki HTTP

Nagłówek SENDFILE
Używany serwer WWW
X-SendfileApache, Lighttpd v1.5, Cherokee
X-LIGHTTPD-send-fileLighttpd v1.4
X-Accel-RedirectNginx, Czirokezi

Minusem używania X-SendFile jest utrata kontroli nad mechanizmem transferu plików. Na przykład, jeśli chcesz wykonać określone działania po pobraniu pliku, na przykład pozwolić użytkownikowi pobrać plik tylko raz, ten X-Sendfile nie będzie mógł tego zrobić, ponieważ skrypt php w tle nie wie, czy pobranie się zakończyło sukcesem.

2. Jak używać NGINX?

Nginx domyślnie obsługuje tę funkcję i nie wymaga ładowania dodatkowych modułów. Po prostu implementacja jest trochę inna, a nagłówek HTTP, który trzeba wysłać, to X-Accel-Redirect. Dodatkowo musisz ustawić następujące ustawienia w pliku konfiguracyjnym

internal oznacza, że ta ścieżka jest dostępna tylko w Nginx i nie może być bezpośrednio dostępna przez przeglądarkę, aby zapobiec nieautoryzowanym pobieraniom.

3. Jak korzystać z programów PHP?


Jeśli dodasz nagłówek X-Accel-Redirect, użytkownik pobierze plik przez ścieżkę /game. Nasza kontrola uprawnień do plików została zaimplementowana.

Oficjalne wprowadzenie do dokumentacji:Logowanie do linku jest widoczne.




Poprzedni:Miłość, małżeństwo i rodzina, pierwsza połowa miesiąca + 18 czerwca
Następny:CF to pierwsza perspektywa całej sieci, która sama się celuje i stabilizuje przez miesiąc
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com