31 lines
1.6 KiB
Markdown
31 lines
1.6 KiB
Markdown
# Projekt - Podstawy bezpieczeństwa komputerowego
|
|
|
|
W ramach projektu zaimplementowany zostały fuzzer do testowania JSON parsera. <br>
|
|
Implementacja JSON parsera znajduje się na githubie: https://github.com/geekskool/python-json-parser
|
|
|
|
## Opis działania fuzzera
|
|
Fuzzer w losowy sposób generuje poprawne JSON-y, a następnie wprowadza do nich popularne błędy, aby sprawdzić, jak parser radzi sobie z niepoprawnymi danymi. Popularne błędy obejmują:
|
|
- brakujące zamknięcie cudzysłowu.
|
|
- brakujące zamknięcie nawiasu klamrowego lub kwadratowego.
|
|
- dodatkowy przecinek na końcu listy lub obiektu.
|
|
- brakujący dwukropek w obiekcie.
|
|
|
|
Wyniki testów są zapisywane do pliku logów, a następnie analizowane, aby ocenić skuteczność parsera.
|
|
|
|
## Wynik przeprowadzonych testów
|
|
Przeprowadzono 100,000 testów, które trwały 28 sekund.
|
|
- Powiodło się 94,361 testów.
|
|
- Nie przeszło 5,639 testów.
|
|
|
|
## Wnioski
|
|
Wszystkie JSON-y, które nie zostały celowo "zepsute" poprzez wprowadzenie popularnych błędów, przeszły testy pomyślnie. Oznacza to, że algorytm jest w stanie poprawnie sparsować każdy poprawny JSON niezależnie od danych wewnątrz.
|
|
|
|
JSON-y zawierające typowe błędy, takie jak:
|
|
- niedomknięty cudzysłów,
|
|
- podwójny przecinek,
|
|
- brakujący nawias klamrowy,
|
|
- brakujący dwukropek w obiekcie,
|
|
|
|
spowodowały niepowodzenie testów.
|
|
|
|
Aby algorytm przeszedł wszystkie testy, należałoby dodać odpowiednią obsługę błędnych JSON-ów, co pozwoliłoby na wykrywanie i raportowanie tych błędów zamiast generowania wyjątków lub niepoprawnych wyników. |