Bezpieczeństwo danych to jeden z najważniejszych aspektów każdej aplikacji webowej. W czasach, gdy wycieki danych stają się codziennością, odpowiednie podejście do przechowywania informacji użytkowników w aplikacjach PHP jest kluczowe.
W tym artykule przedstawiam sprawdzone praktyki, które pomogą Ci zwiększyć bezpieczeństwo Twojej aplikacji.
1. Nigdy nie przechowuj haseł w czystej postaci
Jednym z najczęstszych błędów początkujących programistów jest zapisywanie haseł w bazie w postaci zwykłego tekstu. To ogromne zagrożenie – w przypadku wycieku atakujący od razu ma dostęp do wszystkich kont.
Zalecenie:
Używaj funkcji password_hash() i password_verify(), np.:
// Rejestracja
$haslo_hash = password_hash($haslo, PASSWORD_DEFAULT);
// Logowanie
if (password_verify($haslo_podane, $haslo_hash_z_bazy)) {
echo "Zalogowano poprawnie";
}
2. Walidacja i filtrowanie danych wejściowych
Każde dane, które trafiają do Twojej aplikacji (formularze, adresy URL, nagłówki HTTP), powinny być traktowane jako potencjalnie niebezpieczne.
- Do walidacji e-maili używaj
filter_var($email, FILTER_VALIDATE_EMAIL).
- Oczyszczaj dane przed wstawieniem do SQL.
3. Używaj przygotowanych zapytań (Prepared Statements)
Wstawianie danych bezpośrednio do zapytania SQL naraża aplikację na ataki SQL Injection.
Niebezpiecznie:
$db->query("SELECT * FROM users WHERE email = '$email'");
Bezpiecznie (PDO):
$stmt = $db->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute(['email' => $email]);
4. Szyfrowanie wrażliwych danych
Niektóre dane – np. numery PESEL, adresy czy dane karty – warto dodatkowo zaszyfrować.
Przykład szyfrowania przy pomocy OpenSSL:
$key = "tajny_klucz";
$zaszyfrowane = openssl_encrypt($dane, "AES-128-CTR", $key, 0, "1234567891011121");
5. Regularne aktualizacje i monitoring
- Aktualizuj PHP i wszystkie biblioteki.
- Korzystaj z narzędzi typu PHPStan czy SonarQube do analizy bezpieczeństwa.
- Monitoruj logi serwera i reaguj na podejrzane działania.
Podsumowanie
Bezpieczne przechowywanie danych w aplikacjach PHP to proces ciągły. Najważniejsze zasady to: hashowanie haseł, walidacja danych, przygotowane zapytania SQL oraz szyfrowanie wrażliwych informacji. Dzięki nim Twoja aplikacja będzie znacznie trudniejszym celem dla atakujących.