krasnaaal bezwzględnie poczytaj o bezpieczeństwie z skryptach php! Chociażby pięć pierwszych linków w google.
Użytkownik strony może w adresie napisać dowolną wartość np. www. “moja strona”.yoyo.pl/download.php?down=plik_z_haslami.txt albo jakiekolwiek inne.
Zawsze kiedy korzystasz ze zmiennych globalnych MUSISZ je weryfikować, i albo sprawdzać ich wartość: porównując w tablicy, albo używając np. funkcji switch (wszystko zależy od potrzeb) i czyścić ze znaków, które pozwoliłyby podstępnemu użytkownikowi umieścić poprzez zapytanie swój kod wewnątrz Twojego co może się skończyć bardzo źle
Więc ponawiam: poczytaj o bezpieczeństwie w skryptach php
A dlaczego chcesz deklarować dozwolone pliki w pliku tekstowym? Nie lepiej zdefiniować je sobie gdzieś w PHP, np. jako tablicę? A potem sprawdzać czy dozwolony plik znajduje się w tej tablicy. Choć z drugiej strony jest to trochę bez sensu, bo każdy nowy plik oznacza konieczność dopisania kolejnej nazwy na liście dozwolonych.
W celu prostego zabezpieczenia proponowałbym:
Utworzyć tablicę w PHP z listą rozszerzeń jakie są możliwe do ściągania (np. pdf, txt, zip…).
Utworzyć sobie jeden podkatalog w którym będą wyłącznie pliki do ściągnięcia.
Przy pobieraniu pliku z parametru w $_GET użyć funkcji basename() która zwróci wyłącznie nazwę pliku - więc jeśli ktoś wpisze tam ścieżkę to i tak niczego nie da.
Mając czystą nazwę pliku sprawdzić czy jego rozszerzenie znajduje się na liście dozwolonych (analogicznie można zrobić zamiast tego listę rozszerzeń wykluczonych - jak kto woli).
Jeśli rozszerzenie jest ok to przekierować do podkatalogu zdefiniowanego jako ten z plikami do ściągnięcia i uzupełnić ścieżkę o sprawdzoną uprzednio nazwę pliku i dopuścić do jego ściągnięcia.
W ten prosty sposób mamy załatwione dwie sprawy:
definiujemy jakie rozszerzenia można ściągać lub jakich ściągać nie wolno
ustalamy jeden katalog jako źródło plików do ściągnięcia uniemożliwiając tym samym skakanie po zasobach serwisu i ściąganie plików z dowolnych lokalizacji