Sanityzacja danych to proces usuwania lub neutralizowania niebezpiecznych elementów z danych pochodzących od użytkownika, na przykład znaczników HTML czy poleceń SQL, zanim zostaną zapisane lub wyświetlone.
Sanityzacja a walidacja
Walidacja sprawdza, czy dane mają poprawny format, i odrzuca niepoprawne. Sanityzacja przekształca dane tak, aby były bezpieczne, na przykład usuwa znaczniki skryptów.
Sanityzacja a escapowanie
Escapowanie zamienia znaki specjalne na bezpieczne odpowiedniki przy wyświetlaniu, np. < na <. Najlepiej escapować dane w miejscu użycia: w HTML, atrybucie, SQL czy adresie URL.
Jak stosować w praktyce?
Waliduj dane po stronie serwera, escapuj je przy wyświetlaniu i używaj zapytań parametryzowanych. Do czyszczenia HTML wybieraj sprawdzone biblioteki zamiast własnych wyrażeń regularnych.
Metoda zależy od kontekstu wyjścia.
Typowe błędy
Najczęstszy błąd to czyszczenie danych przy zapisie, a nie przy wyświetlaniu, bo te same dane mogą trafić do HTML, JSON, CSV i zapytań SQL, a każdy kontekst wymaga innego traktowania. Drugi to usuwanie niebezpiecznych fragmentów wyrażeniami regularnymi, które łatwo obejść. Trzeci to zaufanie do danych z własnej bazy, które mogły wcześniej pochodzić od użytkownika.