Pora na rozwinięcie poprzedniej wskazówki podanej we wpisie Bootcamp XVIII: Jak to może być zrobione. Chcę przede wszystkim podkreślić, że tego typu przypadki "występują w naturze", przy czym wykrycie ich nie jest trywialne.
Bootcamp XVIII: wskazówek część dalsza
Na początku sama formatka wyszukiwania i wyniki bez podania jakichkolwiek dodatkowych parametrów wyszukiwania:

Można/należy zapamiętać zwrócone wyniki i wykorzystać je przy dalszych testach.
Pierwszą istotną rzeczą, którą można zauważyć, że w przypadku podania identyfikatora w formatce wyszukiwania, pozostałe parametry nie są uwzględniane. Łatwo to sprawdzić wybierając identyfikator jednej z wiadomości, a następnie ponowić próby wyszukiwania ustawiając pozostałe parametry na wartości, przy których dana wiadomość nie powinna zostać zwrócona. Oznacza to, że nie ma sensu testowanie pozostałych dwóch parametrów, w przypadku gdy podany został identyfikator wiadomości. Dodatkowo można przypuszczać, że formatka jest obsługiwana przez więcej niż jedno zapytanie SQL.
Mamy trzy parametry:
- id
- text
- type
Można stworzyć (w uproszczeniu) następującą listę przypadków testowych:
- id
- text
- type
- id, text
- id, type
- text, type
- id, text, type
Warto zauważyć, że niektóre przypadki mogą zostać "zredukowane". Przypadki 1, 4, 5 i 7 zawierają w sobie parametr id, pozostałe parametry są nieistotne. Po tej redukcji lista możliwych przypadków otrzymuje postać:
- id
- text
- type
- text, type
Teoretycznie można usunąć również przypadek z samym parametrem text, ponieważ parametr type jest ustawiony zawsze. Z drugiej strony czasami ciekawe efekty daje usunięcie jakiegoś parametru (usunięcie wartości lub "całego" parametru), więc można założyć, że sam parametr text również uda się ustawić. W efekcie otrzymywane są cztery przypadki, które należy przetestować. I w tym konkretnym przykładzie lepiej nie zakładać, że skoro w jednym przypadku testowym jakiś parametr jest "bezpieczny", będzie również bezpieczny w innym.
I na koniec dowód, że się da:

Dzisiaj kontynuacja cyklu "zrób to sam w weekend". Tym razem przykład jak szukać błędów typu sql injection (patrz: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')) Podobnie jak ostatnim razem wpis nie będzie zawierał j
Przesłany: Dec 11, 16:18