Jak zablokować dostęp do niektórych plików?

Bezpieczeństwo Zostaw komentarz

Czasami istnieje konieczność zablokowania dostępu do pewnych plików, bądź nawet do pewnego katalogu. Załóżmy, że napisałeś prostą aplikację w PHP, która zapisuje jakieś pliki do katalogu o nazwie data (mogą to być wygenerowane jakieś pliki tymczasowe, może jakiś system cache zapisuje pewne treści, albo z powodu braku bazy danych przechowujesz pewne dane w plikach tekstowych).

Istnieje konieczność zablokowania dostępu do plików. Załóżmy, że ktoś odgadnie, że pliki z ważnymi danymi (np. loginy, e-maile i hasła użytkowników) przechowujesz w katalogu data a pliki mają nazwy 0001.txt, 0002.txt itp. Pierwszy najprostszy sposób to sprawdzenie, czy serwer „listuje” zawartość katalogów tj. czy wpisując w przeglądarce internetowej www.strona.pl/data/ pojawi się lista plików. Jeśli lista plików się pojawi to można ją ukryć przed ciekawskimi na dwa sposoby.

Pierwszy prostszy sposób to po prostu wrzucenie pustego pliku o nazwie index.html i zamiast listy plików pojawi się biała pusta strona. Ewentualnie można wrzucić plik index.php o zawartości podobnej do poniższej, który spowoduje przekierowanie nas na stronę główną.

<?php header("Location: http://www.domena.pl\n\n"); ?>

Drugi sposób wymaga stworzenia pliku o nazwie .htaccess i poniższej zawartości który spowoduje zakaz listowania plików:

Options -Indexes

Skoro zablokowałeś wyświetlanie listy plików, to połowa sukcesu za nami (użytkownik nie widząc listy plików ma mniejsze szanse, aby odgadnąć nazwę pliku w którym są ważne dane, ale zawsze istnieje ryzyko, że odgadnie on katalog i nazwę pliku i wpisze w przeglądarce internetowej bezpośredni adres do pliku tekstowego np. www.domena.pl/data/0001.txt) . Aby i temu zapobiec należy stworzyć plik o nazwie .htaccess (który możliwe, że już wcześniej stworzyłeś) do którego należy dopisać następującą linijkę:

deny from all

Ten wpis spowoduje odrzucenie wszystkich żądań. Jeśli plik .htaccess znajduje się w katalogu data do którego chcemy zablokować dostęp to taki wpis jak najbardziej można ustawić. Jest on bardzo dobry, ale czasami się nie sprawdza. Załóżmy, że pliki z danymi są w katalogu głównym w którym są też zwykłe użytkowe pliki html. Wtedy nie można zablokować dostępu do wszystkiego i trzeba się nagimnastykować, tj. stworzyć regułę, która wyłączy dostęp tylko do niektórych plików. Poniższy wpis powoduje zakaz wyświetlania się plików z rozszerzeniem txt

<Files "*.txt">
deny from all
</Files>

Ufff to by było na tyle. Oczywiście nie wyczerpałem tematu, a jedynie zasygnalizowałem problem i podałem najpopularniejsze sposoby na jego rozwiązanie.

Tagi: , , ,

Zanim dodasz komentarz, zapoznaj się z kilkoma podstawowymi zasadami:

  1. Jeśli zamiast imienia (lub pseudonimu) wpiszesz jakiś mało logiczny ciąg znaków np. asdfg, to taki komentarz zostanie usunięty.
  2. Jeśli się za kogoś podszywasz, to taki komentarz zostanie usunęty
  3. Jeśli zamiast imienia (pseudonimu) wpiszesz jakieś słowo kluczowe (np. tani hosting), to taki komentarz zostanie usunięty
  4. Jeśli Twoim jedynym celem jest zareklamowanie się, to taki komentarz zostanie niezwłocznie usunięty
  5. Komentarze nie związane z tematem notki są kasowane.
  6. Komentarze, które zawierają wulgarne słowa, bądź są obraźliwe (nie dotyczy konstruktywnej krytyki) są kasowane.
  7. Komentarze z mailem typu "nie.podam@coś.tam.pl" są kasowane
  8. Komentarze pisane niechlujnie (bez interpunkcji, w błędami ortograficznymi, z licznymi literówkami, pisane WIELKIMI LITERAMI) są kasowane

2 komentarze do “Jak zablokować dostęp do niektórych plików?”

  1. Jakub Kozak Says:

    Rzeczywiście, opisany sposób zabezpiecza przed dostępem poprzez serwer WWW do plików o danym rozszerzeniu. Jeżeli ktoś ma skrypt, który już produkuje właśnie takie pliki i robi to w katalogu serwera WWW, to jest to skuteczny sposób, żeby chronić pliki przed takim dostępem.

    Jeżeli natomiast skrypt składający dane w plikach na serwerze, jest jeszcze w fazie projektu, to może lepiej przemyśleć sprawę i zapisywać pliki w innym miejscu niż katalog serwera WWW?

  2. admin Says:

    Oczywiście – najlepiej pliki zapisywać w jakimś bezpiecznym katalogu (np. „nad public_html”) ale nie kazdy hosting oferuje taką opcję, że się wrzuca pliki do public_html, na niektórych hostingach wrzucamy pliki „od razu do katalogu głównego).

Zostaw komentarz

WordPress - Hosting: Twój hosting - Skórka: N.Design Studio - Spolszczenie: Adam Klimowski.
RSS wpisów RSS komentarzy Zaloguj się