Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jakie headers by przeglądarka ściągała?
Forum PHP.pl > Forum > Przedszkole
konrados
Witam,

W jednym z moich skryptów umożliwiam userom upload plików (jako załączniki do wiadomości). Ze względów bezpieczeństwa, na początku myślałem by zabronić im uploadowania plików typu .php, .js, .htm ale tak sobie myślę - może da się inaczej? Może niech mogą wrzucać pliki dowolnego rodzaju, a ja po stronie serwera zrobię tak by zawsze po ich kliknięciu włączało się "Ściągnij plik..." zamiast uruchamiania go?

To chyba da się zrobić za pomocą odpowiednich headers?

sczegóły:
pliki są przechowywane w katalogu "attachments". Listowanie jest wyłączone. Muszę zrobić co następuje:
1. gdy user wpisze w pasku adresu przeglądarki "attachments/jakis_plik.php" to mu się błąd wywali.
2. stworzyć plik np. "getfile.php" który bierze za parametr nazwę pliku i NIE wykonuje go nawet jak php, zamiast tego-każe przeglądarce go ściągnąć, jest więc "getfile.php?name=jakis_plik.php" i wysłanie odpowiednich headerów.

Da się tak? I czy to jest bezpieczne?
sniezny_wilk
Abstrahując już od samego czy da się czy nie (bo da się smile.gif) to pozwalanie na wgranie pliku php to już jest zły pomysł sam w sobie. Zobacz, ktoś wgrywa plik usuwający wszystkie dane z katalogu, katalogów wyżej itp, wcześniej wrzuca prawidłowy plik i patrzy skąd leci plik - pobiera adres, odpala swój skrypt przez wpisanie adresu i cieszy się swoim sukcesem smile.gif
konrados
No tak... myślałem jednak, że za pomocą .htaccess mógłbym zabronić jakoś bezpośredniego dostępu do plików w katalogu "attachments". Ale dobra, zabronię userom uploadowania plików php - ale dalsze pytania są wciąż aktualne. Bo chciałbym jednak umożliwić jakoś upload plików typu .htm czy .js czy .txt - i teraz jakie headers mam wysłać by przeglądarka sugerowała ściągnięcie zamiast otwierania ich ?
pest
Tak jak robi to google w mailach.

Instrukcja jest w opisie samej funkcji header" title="Zobacz w manualu PHP" target="_manual.

Dokładniej spróbuj pokombinować z tym:
  1. <?php
  2. // It will be called downloaded.pdf
  3. header('Content-Disposition: attachment; filename="downloaded.pdf"');
  4. ?>


Co do plików php... możesz im zmieniać rozszerzenia, albo zorientować się czy przez .htaccess możesz wyłączyć obsługę interpretera dla tego katalogu.
konrados
Dzięki Wam!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.