Dzisiaj powiemy o bardzo fajnej i prostej sztuczce umożliwiające w bardzo łatwy, a co najważniejsze szybki sposób zwiększyć bezpieczeństwo witryny z standardowym panelem administracyjnym. Pokażemy jak za pomocą pliku .htaccess lub skryptu php utworzyć białą listę (tzn. white list) dozwolonych użytkowników. Sztuczka polega na ograniczeniu możliwości logowania lub dostępu do danego katalogu na serwerze www, poprzez wyznaczenie zaufanych osób z danej puli IP. Dla tych szybkich od razu dodamy że chodzi o zabawę z dyrektywą htaccess deny from all lub w przypadku skryptu języka PHP wykorzystaniu informacji o adresie IP zawartej w tablicy $_SERVER[’REMOTE_ADDR’].
htaccess deny from all
Zacznij od utworzenia pliku konfiguracyjnego Apache o nazwie .htaccess. Wypełnij go następującą zawartością:
AuthUserFile /dev/null AuthGroupFile /dev/null AuthName "Admin Access Control" AuthType Basic <LIMIT GET> order deny,allow deny from all #whitelist allow from 127.0.0.1 </LIMIT>
Oczywiście zamiast przykładowego adresu IP 127.0.0.1 należy w tym miejscu wstawić adres osoby która będzie miała dostęp do danego katalogu. Teraz wystarczy że ten plik wrzucimy na nasz hosting za pomocą klienta FTP do folderu do którego dostęp chcemy ograniczyć. Dla przykładu może być to katalog zawierający panel administracyjny CMS. Jeśli chcemy udostępnić większej ilości dostęp do danego katalogu wystarczy dodać dodatkowe wpisy allow from w pliku .htaccess.
Wersja PHP white list
Jeśli ktoś woli wykorzystać język php do stworzenia white listy można to zrobić również w bardzo prosty sposób. Wystarczy utworzyć plik o nazwie whitelist.php z następującą zawartością:
<?php $allow_ip_list = array('127.0.0.1', '127.0.0.2'); $visitor_ip = $_SERVER['REMOTE_ADDR']; if (!in_array($visitor_ip, $allow_ip_list)) { die(); } ?>
Oczywiście w tablicy $allow_ip_list należy umieścić własne zaufane adresy IP administratorów witryny. Teraz wystarczy że w dowolnym pliku który chcesz chronić Twojej strony internetowej umieścisz na jego początku następujący fragment kodu:
<?php include('whitelist.php'); ?>
Gotowe. Już Twoja podstrona zyskała nową ochronę. Pamiętaj, że jest to skrypt php więc jeśli chcesz go umieścić w pliku z rozszerzeniem .html to musisz przekonfigurować serwer Apache lub zmienić rozszerzenie tego pliku na .php.
Jeśli potrzebujesz odwrotnego w działaniu skryptu php, który banuje pewnych użytkowników wystarczy że w instrukcji warunkowej if usuniesz negacje logiczną (wykrzyknik).
W przypadku jeśli posiadasz jeden z popularnych systemów CMS możesz skorzystać z wtyczek dedykowanych dla niego. Przykładowo dla Wodrpessa istnieje multum wtyczek np. WP-Ban.

To by było dzisiaj na tyle. Być może zainteresują Cię inne nasze wpisy związane z językiem php:
- PHP shell z wykorzystaniem Metasploit Framework
- Jak ukryć kod PHP – prosta sztuczka
- Masz wirusa na stronie! Usuwamy WebShelle…
Zapraszamy również na naszego fejsa HakerEduPL. Powodzenia! 🙂
Dodam rownież, ze mozna zastosowac header(’Access-Control-Allow-Origin: ’) w celu „whitelistowania” danego skryptu.
Dzięki za komentarz Kenjin! Tylko czy można za pomocą nagłówków filtrować użytkowników na podstawie jakiś danych identyfikacyjnych typu adres IP? Wydaje mi się, że w ten sposób można jedynie ograniczyć specyficzne zapytania HTTP. Należy pamiętać, że same nagłówki można łatwo fałszować po stronie klienta.
Tak header(‚Access-Control-Allow-Origin:). Ten naglowek zabrania requestów pochodzących z innego adresu IP niż podany w nagłówku, lub lokalnego. Nie wiem czy tak łatwo je sfałszować, php nie jest widoczny przez klienta gdyż kod znajduje się na serverze. Ale może poprostu sie nie znam ? 🙂
wycina mi wasza strona nawiasy (po dwukrupku powinno byc adres IP) 😛
Miałem na myśli nagłówki po stronie klienta.