Lekcje >> Podstawy MySQL
Polimax

Drukarnia w Warszawie realizująca druk wizytówek, plakatów jak również fotoksiążki, fotoobrazy i fotokalendarze - z wysyłką na terenie całego kraju.

Ochrona bazy danych

Jeżeli udostępniamy bazę danych poprzez stronę WWW, to musimy zabezpieczyć serwer baz danych. Od razu należy powiedzieć, że administratorzy blokują możliwości działań ryzykownych, niemniej musimy znać zagrożenia.

MySQL w aspekcie serwera Apache

Należy unikać uruchamiania serwera MySQL z poziomu użytkownika root. Dałoby to każdemu użytkownikowi logującemu się do serwera baz danych, prawo do odczytywania i zapisywania wszystkich plików. Włamianie do witryny nie byłoby w takiej sytuacji dużym problemem. Powinno się zarejestrować nowego użytkownika, przeznaczonego do uruchamiania serwera MySQL.

Stosowanie haseł

Każdemu użytkownikowi powinniśmy nadać hasło dostępu, które powinno być często zmieniane i trudne do odgadnięcia. Nejlepszym rozwiązaniem jest losowa kombinacja liter i cyfr. Jeżeli hasła są przechowywane w plikach, to pliki te powinny być dostępne tylko dla właścicieli tych haseł.

Skrypty PHP operujących na bazie danych, muszą najpierw połączyć się z danym serwerem, co wymaga podania hasła dostępu odpowiedniego użytkownika. Hasło oraz identyfikator tego użytkownika zapisuje się w pliku dołączanym do skrypu za pomocą funkcji include(). Plik ten powinien być zapisany w innej lokalizacji jak dokumenty WWW i dostępny, tylko dla zalogowanego użytkownikowa. Opdowiedni przykład jest pokazywany podczas nauki PHP.

Jeżeli plik z hasłem jest przechowywany w tej samej lokalizacji co dokumenty WWW, to należy się upewnić że nie będą one analizowane przez interpreter PHP ani też wyświetlone przez przeglądarkę. Tutaj znajduje się przykład.

Hasła przechowywane w bazie danych powinny być szyfrowane jednostronnie (bez możliwości odszyfrowania) za pomocą funkcji md5() lub sha1(). Należy wtedy pamiętać, że po zapisaniu zaszyfrowanego hasła za pomocą INSERT, w treści polecenia SELECT należy zastosować tę samą funkcję szyfrującą aby porównać hasła zaszyfrowane.

Przywileje użytkowników

Omawialiśmy już system uprawnień (przywilejów) MySQL oraz następstwa nadania poszczególnych typów. Przypomnijmy sobie, że najważniejszą zasadą jest przyznawanie minimalnych, tylko niezbędnych uprawnień. Bardzo ryzykowne jest nadanie przywilejów PROCESS, FILE, SHUTDOWN i RELOAD uzytkownikom którzy nie są administratorami. Użytkownik z uprawnieniem PROCESS, ma możliwość przeglądania czynności i danych innych użytkowników, w tym również haseł dostępu, natomiast FILE uprawnia do edycji plików systemowych serwera. Ostrożność jest wskazania przy dadawaniu uprawnienia GRANT, ponieważ taki użytkownik może nadawać innym użytkownikom swoje uprawnienia.

Dane wysyłane za pomocą formularzy

Powinny być dokładnie weryfikowane co do treści jak również ich rozmiaru.

Dane poufne

Jeżeli użytkownicy mają wysyłać do bazy dane poufne lub podawać hasła dostępu, to powinno się zastosować protokół SSL (Secure Socets Layer), są one wtedy przekazywane z przeglądarki do serwera w postaci zaszyfrowanej, a nie jako zwykły tekst.