Serwer Apache posiada szereg madułów umożliwiających przeprowadzenie uwierzytelnienia czytelnika strony. Jednym z nich jest mod_auth_mysql stworzony przez ekipię Jerrego Stuckle’ i Samuela Brauer’a, którego działanie sprowadza się po prostu do porównywania loginu i hasła z tymi zapisanymi w bazie danych MySQL. W celu korzystania z tego modułu konieczna jest instalacja i kompilacja go na serwerze.
Instalacja i kompilacja jest banalnie prosta.
1.1: Najpierw ściągamy na serwer archiwum z źródłem modułu ze strony: http://sourceforge.net/projects/modauthmysql/
Polecam wiecznie żywą przeglądarkę Lynx
1.2: Rozpakowujemy ściągnięte archiwum poleceniem:
tar zxvf mod_auth_mysql-3.0.0.tar.gz
Podane parametry oznaczają:
1.3: Przygotuj sobię w bazie odpowiednią tabelę do przechowywania haseł użytkowników strony.
1.4: Instalacja i kompilacja - w katalogu z mod_auth_mysql wykonujemy dwa polecenia:
make
make install
1.5: Ładujemy moduł do Apache - w pliku httpd.conf dopisujemy linię:
LoadModule mysql_auth_module libexec/mod_auth_mysql.so
A teraz podajemy dane do połączenia z MySQL:
Auth_MySQL_Info host user hasło
Jeśli wykonałeś wszystkie podpunkty instalacji modułu, wystarczy, ze teraz odpalisz Apache.
Nie powinno być żadnych komunikatów oprócz inforamcji o uruchomieniu.
Jeśli są - oznacza to najpewniej, że podałeś złe dane w Auth_MySQL_Info.
Działania modułu realizujemy za pomocą pliku .htaccess.
Którego zawartość powinna brzmieć mniej więcej tak:
ErrorDocument 403 /allow_denited.html
AuthName "nazwa witryny/zasobu"
AuthType Basic
AuthMySQL on
AuthMySQL_DB baza
AuthMySQL_Host host
AuthMySQL_User user
AuthMySQL_Password hasło
AuthMySQL_Password_Table tabela
AuthMySQL_Username_Field login
AuthMySQL_Password_Field pass
AuthMySQL_Empty_Passwords off
AuthMySQL_Encryption_Types PHP_MD5
require valid-user
Pierwszą linijką definiujemy która strona ma być wyświetlana podczas, gdy dostęp jest zabroniony.
Druga linijka nazywa “okienko” uwierzytelniania.
Trzecia linijka włącza moduł.
Czwarta linijka wybiera bazę MySQL.
Piąta linijka wybiera komputer / serwer / host (jak zwał tak zwał ).
Szósta linijka wybiera użytkownika do bazy.
Siódma linijka definiuje hasło użytkownika bazy.
Ósma linijka definiuje tabelę z danymi uwierzytelnionych czytelników witryny.
Dziewiąta i dziesiąta linijka definiuje pole w tabeli, gdzie ma szukać loginu i hasła podawanego przez czytelnika.
Jedenasta linijka zabrania podania pustego hasła.
Dwunasta linijka definiuje hashowanie haseł za pomocą mechanizmu MD5 (wartością domyślną jest hashowanie przez Unixowski DES).
Trzynasta linijka zezwala dostęp dla poprawnie zalogowanego czytelnika.
Dodatki do modułu znajdziemy tutaj: http://sourceforge.net/tracker/?group_id=60218&atid=493464
Można tam znaleźć m.in patch do Apache 2.2.
mod_auth_mysql zainstalowany, skonfigurowany, przetestowany poprawnie. Co teraz?
Teraz możemy tworzyć np. panel administratora do katalogu z plikiem .htaccess, ponieważ uwierzytelnianie włączone.
Jednak muszę Cię ostrzec, że własne mechanizmy uwierzytelniania napisane za pomocą np. PHP i MySQL często bywają lepsze od tego modułu.
Na minus korzystania z niego wpływa:
Jednak na plus wpływa fakt, że bardzo trudno jest zcrackować taką stronę.
Co tutaj się dużo rozpisywać? Szczegóły na temat tego jak zastosować mod_auth_mysql znajdziecie tutaj : http://modauthmysql.sourceforge.net/HowToBuildForWindows.zip