proste rozwiązanie ograniczające dostęp do (niektórych) przesyłanych / pobieranych plików

11

Sytuacja początkowa

W przypadku witryny, którą konfiguruję, analizowałem całą dziedzinę zabezpieczania przesyłania / pobierania i ograniczania dostępu do nich na podstawie ról / możliwości użytkowników. Oczywiście przeczytałem kilka poprzednich pytań związanych z (ogólnym) tematem tutaj, ze względów referencyjnych najważniejsze / interesujące, które znalazłem:

Uwagi uzupełniające

Ogólnie rzecz biorąc, nie jest złym pomysłem, aby dodatkowo poprawić bezpieczeństwo instalacji WordPress - na przykład chronić swoją wp-config.php- jest wiele rzeczy, które możesz i powinieneś zrobić. Istnieje mnóstwo informacji, jak to zrobić. Jestem w kontekście tego pytania głównie co do moich przesłanych / pobranych plików.

Przesyłanie Wordpress nie jest zabezpieczone, każdy może przeglądać uploadsfolder, chyba że uniemożliwi się to za pomocą .htaccess:

Options All -Indexes

.htaccessPlik musi być umieszczony wewnątrz uploadsfolderu. Ale to tak naprawdę ich nie zabezpiecza, tylko utrudnia znalezienie plików. Dodatkowo możesz zapobiec hotlinking, zasadniczo ograniczając dostęp w oparciu o referrer- chociaż jest to trochę inny przypadek, myślałem, że o tym wspominam, nie będę dalej opracowywał, możesz znaleźć wiele informacji na ten temat.

Oczywiście istnieje możliwość ustawienia postów jako prywatnych lub utworzenia niestandardowego typu postu z odpowiednimi plikami szablonów, aby ustawić ten typ posta na prywatny, ale to nie zabezpiecza twoich plików. To samo można powiedzieć o pakowaniu plików w warunkowe, takie jak is_user_logged_in()lub is_admin().

Na marginesie jest wiele wtyczek, które obiecują, że twoje pliki będą bezpieczne i chronione, ale wiele z nich udaje, że to robi, niektóre z przyczyn są powyżej. Po prostu to rozmyślam, ponieważ jestem prawie pewien, że nie wszyscy to wiedzą - więc bądź tego świadomy.

Cel

Moim zamiarem było ograniczenie dostępu do (niektórych) plików i odpowiednio plików do pobrania. Aby mieć pewność, że nikt niechciany nie będzie miał do nich dostępu, nie przez przypadek lub jeśli ktoś zna nazwę pliku, pliki powinny być naprawdę prywatne i bezpieczne. W końcu tylko niektóre osoby powinny mieć dostęp bez wyjątków.

Ponadto nie musiałem prywatyzować całej strony, co rzeczywiście przyniosłoby efekt przeciwny do zamierzonego - jest ona wykorzystywana do publicznych prezentacji. Co więcej, chciałem, aby rozwiązanie było łatwe w użyciu, z tego prostego powodu, że niektórzy ludzie z nim pracujący nie są ekspertami komputerowymi, jak to często bywa.

Pytanie

Stąd pytanie, czy istnieje (względnie) prosty sposób ograniczenia dostępu do (niektórych) plików i odpowiednich plików do pobrania? I tak jak to zrobiłem, oznacza to sposób, aby naprawdę je chronić i zabezpieczyć?

Nicolai
źródło
Powinieneś dodać swoje rozwiązanie jako odpowiedź zamiast osadzać je w pytaniu.
s_ha_dum
I proszę używać odpowiednich wielkich / małych liter. Czyta się jak czat ...
Kaiser
Dzięki za konstruktywną krytykę, wkrótce ją zmienię i przebuduję.
Nicolai

Odpowiedzi:

8

Odpowiadam na moje własne pytanie, ponieważ znalazłem rozwiązanie, ale naprawdę interesują mnie Twoje opinie na jego temat. A może masz znacznie lepsze rozwiązanie, jeśli tak, naprawdę chciałbym tutaj o tym powiedzieć.

Wynik badań

Moje wyniki badań były następujące:
1. wydobycie plików poza katalog główny dokumentu, wwwfolder;
2. zabronić jakiegokolwiek bezpośredniego dostępu do folderu zawierającego pliki;
3. pozwól skryptowi obsłużyć żądania do plików;
Źródła tych punktów są - przynajmniej w większości - zawarte w moim pytaniu.

Rozwiązanie

  1. Zainstalowałem wtyczkę » wp-downloadmanager «
    • w trakcie procesu fileszostanie utworzony folder o nazwie wp-content;
  2. Dodałem .htaccessplik do nowego filesfolderu:
    • treść .htaccess:
      Options All -Indexes
      Order Deny,Allow
      Deny from all
  3. Zmieniłem jedną ważną opcję wtyczki:
    • średni wariant I jest download method;
    • Zmieniłem to na output file;
  4. Dodałem kilka plików przez interfejs wtyczki:
    • istnieje opcja o nazwie allowed to download;
    • co pozwala ograniczyć dostęp w zależności od roli / możliwości użytkownika;
  5. Zrobiłem kilka testów:
    • brak bezpośredniego dostępu do plików - nie przez pasek adresu ani wget;
    • publiczne pliki do pobrania można uzyskać za pośrednictwem ich bezpośrednich linków - wybieram »ładne permalinki: tak« i »pobierz URL: identyfikator pliku« na panelu opcji - pasek adresu / wget też działa;
    • chronione, ograniczone pliki do pobrania są dostępne tylko po zalogowaniu jako użytkownik z prawidłową rolą / możliwościami;

Wnioski końcowe

Myślę, że rozwiązanie jest zgodne z wynikami badań. Oprócz umieszczania plików na zewnątrz. Ale ograniczenie dostępu do katalogu / ochrona katalogu i pozwolenie skryptowi na obsługę żądań plików jest pełne. Ograniczeniem dostępu zajmuje się, .htaccessa skrypt w tym przypadku jest wtyczką wp-downloadmanger.

Uwagi uzupełniające

  • jest to absolutnie konieczne , aby zmienić download methodnaoutput file
  • i oczywiście jest to konieczne , że .htaccessplik jest w miejscu

  • aby sprawdzić, czy wtyczka przejmuje rolę skryptu, spójrz na wp-downloadmanger.php- około linii od 207 do 227 (wersja 1.6.1); ma to na celu uzupełnienie połączonych informacji

Nicolai
źródło