Zastanów się open_basedir
nad konfiguracją „na stronę”. open_basedir
jest ustawieniem php.ini, które uniemożliwi twoim skryptom dostęp do plików poza zdefiniowaną białą listą. Jeśli serwer obsługuje kilka witryn, uniemożliwi to jednej witrynie odczyt ustawień bazy danych z innej witryny. Zapobiegnie również dostępowi do skryptu php / modyfikowaniu podstawowych plików systemowych. Open basedir jest łatwy do skonfigurowania, wystarczy dodać wiersz „ php_admin_value open_basedir /my/list/of/folders:/as/a/colon/seperated/list
” do każdego hosta Apache.
Zastanów się również nad wyłączeniem silnika skryptów PHP dla wszystkich witryn / folderów, które nie powinny zawierać skryptów PHP (np. Folder przesłanych obrazów). Ponownie, jest to proste, dodaj „silnik php_admin_value wyłączony” do dowolnych wirtualnych hostów Apache, które nie potrzebują php. Aby wyłączyć PHP w katalogu, umieść to samo w znaczniku Directory.
Uruchamiaj uprawnienia do plików tak ściśle, jak to możliwe, unikaj dostępu do zapisu w skryptach PHP dla użytkownika Apache, co zapobiega modyfikowaniu się uruchomionego skryptu lub innych skryptów na tej samej stronie / serwerze. Jeśli to możliwe, unikaj uprawnień 777, określ minimalne uprawnienia wymagane do uruchomienia aplikacji i korzystania z nich.
Jeśli hostujesz wiele witryn, każda z własną bazą danych, użyj osobnego użytkownika MySQL / Postgres dla każdego z nich i ustaw uprawnienia dla każdego użytkownika, tak aby miał on dostęp tylko do odpowiednich baz danych. To znowu zapobiegnie manipulowaniu nieuczciwym skryptem przy bazie danych innej aplikacji.
Suosin, HardenedPHP, mod_security i tym podobne są również cenne, ale używaj ich oprócz ściśle zamkniętej konfiguracji, nie zamiast.