PHP niesłusznie jest nazywany mało bezpiecznym językiem. Przeświadczenie takie pozostało po poprzednich wersjach języka, które szczerze mówiąc rzeczywiście pozostawiały wiele do życzenia w kwestiach bezpieczeństwa, szczególnie w rękach mało doświadczonych programistów. To się jednak zmieniło, a PHP wciąż ewoluuje. Prawda jest taka, że poprawnie skonfigurowany serwer, z poprawnie skonfigurowanym PHP i prawidłowo skonfigurowaną bazą danych, na których działa poprawnie napisana aplikacja to mieszanka, która może się okazać naprawdę bardzo bezpieczna.
Trzeba jedynie trzymać się pewnych reguł i zasad, mieć pojęcie o możliwych typach ataków i pisać kod "z głową". W cyklu artykułów tutaj postaramy się omówić sobie wszystkie najważniejsze zasady, których bezwzględnie powinniśmy się trzymać podczas pisania swoich aplikacji w PHP. Na spokojnie, w cyklu kilku artykułów omówimy sobie także zabezpieczenia po stronie serwera, silnika, bazy i zasady bezpiecznej ich konfiguracji.
Idąc na przekór wielu poradnikom, które opisuję jedynie techniczne aspekty dodam od siebie kilka spraw, które nie są zazwyczaj opisywane w poradnikach. Zaczynamy część pierwszą, która zarazem będzie jedynie wstępem i krótkim wprowadzeniem do cyklu artykułów.
Zasada numer zero, czyli po co "hackerom" moje dane.
Postanowiłem jako pierwsze (a właściwie zerowe) opisać pewne błędne założenie, które ja nazywam następująco:
"Prowadzę stronę o chomikach, więc po co crackerom moja baza danych?".
Jest to bardzo często spotykane myślenie wśród osób zarządzających swoimi serwerami i oprogramowaniem. Jest to myślenie jak najbardziej niepoprawne. Należy bowiem pamiętać, że każda zdobyta informacja - nawet taka jak dostęp do bazy danych strony o chomikach jest na wagę złota.
Po pierwsze - daje to crackerowi wolny dostęp do danych na serwerze, po drugie - co łączy się z pierwszym - na serwerze tym może też wkrótce (lub już istnieje) pojawić się inny serwis, do którego z automatu będzie miało się dostęp. Po trzecie - może to też być hosting dzielony, co stworzy crackerowi jeszcze większe pola do popisu. Po czwarte - w bazie danych mogą znaleźć się i najprawdopodobniej się znajdują dane kluczowe dla użytkowników, jak ich loginy, hashe haseł (lub nawet czasami same hasła otwartym tekstem co woła o pomstę do nieba), ich emiale i inne dane osobowe. Dane takie są cenne, gdyż istnieje prawdopodobieństwo, że dany użytkownik używa podobnych danych do logowania np. na swoją skrzynkę pocztową. Stąd już krótka droga do kilku socjotechnicznych zabiegów i np. przejęcia konta w banku. Brzmi jak bajka? To nie jest bajka, lecz rzeczywistość i taki z pozoru nic cennego nie posiadający serwis o hodowaniu chomików może wywołać nieświadomie tzw. efekt motyla, przez który ucierpieć mogą nieświadomi użytkownicy.
Biorąc więc pod uwagę powyższe (a opisałem tylko kilka aspektów) powinniśmy zawsze pamiętać, że nawet z pozoru nic nieznacząca aplikacja webowa może w rzeczywistości wywołać prawdziną lawinę, za którą odpowiedzialni będziemy właśnie my. W związku z tym - każda, nawet najmniejsza aplikacja działająca w sieci powinna być dokładnie przeanalizowana i przede wszystkim stworzona z uwzględnieniem wszystkich niezbędnych wymogów bezpieczeństwa. Wiadomo, że nikt nie jest wróżbitą, a żadna aplikacja nie jest idealna i w 100% bezpieczna, ale trzymając się kluczowych zasad możemy przynajmniej sprawić, że nie będzie ona dla crackera jak otwarta książka.
Złota zasada - każdego użytkownika traktujemy jako potencjalnego atakującego.
Bez wyjątków.