Wyjątki a testowanie penetracyjne
Założenie: Pokażemy, jak prawidłowo obsługiwać wyjątki w PHP, aby zabezpieczyć aplikację przed atakami związanymi z nieprawidłowym ich przetwarzaniem.
Krok po kroku:
- Krok 1: Prosty przykład wyjątku.
try { $plik = fopen("plik_którego_nie_ma.txt", "r"); if ($plik) { fclose($plik); } } catch (Exception $e) { echo "Wystąpił błąd: " . $e->getMessage(); }
Ten kod próbuje otworzyć plik, który prawdopodobnie nie istnieje. Jeśli plik nie zostanie znaleziony, zostanie wygenerowany wyjątek, który zostanie przechwycony przez blok `catch`. `$e->getMessage()` wyświetla komunikat o błędzie.
- Krok 2: Różne typy wyjątków.
try { // Kod, który może wygenerować różne wyjątki $dzielnik = 0; $wynik = 10 / $dzielnik; } catch (DivisionByZeroError $e) { echo "Próba dzielenia przez zero!"; } catch (Exception $e) { echo "Wystąpił inny błąd: " . $e->getMessage(); }
Ten przykład pokazuje obsługę specyficznego wyjątku `DivisionByZeroError` oraz ogólnego wyjątku `Exception`. To pozwala na bardziej precyzyjne reagowanie na różne typy błędów.
- Krok 3: Rzuć własny wyjątek.
class MyException extends Exception {} function sprawdzDane($dane) { if (empty($dane)) { throw new MyException("Dane są puste!"); } // ... dalsza walidacja danych ... } try { sprawdzDane(""); } catch (MyException $e) { echo "Błąd: " . $e->getMessage(); }
Tutaj definiujemy własny typ wyjątku `MyException` i używamy go do zgłaszania błędu, gdy dane są puste. To pozwala na lepszą organizację i zarządzanie wyjątkami w aplikacji.
Ten przykład pokazuje podstawy obsługi wyjątków w PHP. Prawidłowe ich użycie jest kluczowe dla tworzenia bezpiecznych i stabilnych aplikacji. Zachęcamy do dalszego zgłębiania tematu!