Odpowiedź.
Ręczne testowanie uprawnień dostępu i ról pozwala zweryfikować, czy różne typy użytkowników mają odpowiedni poziom dostępu do funkcji i danych aplikacji.
Historia pytania
Wraz ze wzrostem liczby użytkowników i ich scenariuszy działania, nawet proste aplikacje zyskały model ról. Błędy w uprawnieniach często prowadziły do poważnych wycieków danych lub ograniczenia operacji biznesowych. Stąd pojawiła się potrzeba dokładnego testowania ról ręcznie.
Problem
- przegapienie błędów w ograniczeniach dostępu do wrażliwych danych;
- nieprawidłowa konfiguracja ról, umożliwiająca użytkownikom wykonywanie niedozwolonych działań (np. dostęp do funkcji administracyjnych dla zwykłych użytkowników);
- trudności w weryfikacji złożonych ról lub nietypowych scenariuszy dostępu.
Rozwiązanie
- Dokumentować wszystkie istniejące role i odpowiednie działania dla każdej roli;
- Tworzyć zbiory testów dla każdej roli, w tym warunkowe przecięcia ról;
- Weryfikować dostęp nie tylko do funkcji, ale także do różnych części danych (CRUD);
- Walidować zarówno dostęp bezpośredni (przez UI), jak i próby dostępu przez bezpośrednie linki lub API.
Kluczowe cechy:
- Wszechstronne pokrycie scenariuszy: każdy typ użytkownika musi być sprawdzony we wszystkich możliwych rolach i działaniach;
- Testowanie granicznych i złożonych ról: błędy często ujawniają się przy nakładających się uprawnieniach różnych ról;
- Sprawdzanie ominięcia standardowych interfejsów: testowanie bezpośredniego dostępu do stron/działań, do których użytkownik oficjalnie nie ma praw.
Pytania z podstępem.
Czy wystarczy przetestować tylko podstawowe role (np. "Administrator" i "Użytkownik")?
Nie. To właśnie w rolach pośrednich, rzadko używanych i złożonych najczęściej ukrywają się defekty.
Czy ograniczenie UI (ukryte przyciski i elementy) jest wystarczające dla bezpieczeństwa?
Nie. Kontrola UI nie chroni przed próbami dostępu bezpośredniego po adresie lub przez API, uprawnienia należy ograniczać na poziomie logiki serwera.
Czy należy testować uprawnienia dostępu przez różne kanały aplikacji (np. zarówno przez web, jak i przez aplikację mobilną)?
Obowiązkowo. Często różnice w implementacji prowadzą do odmienności w zachowaniu i błędów w ograniczeniu uprawnień.
Typowe błędy i anty-wzorce
- Sprawdzanie tylko standardowych ról
- Skupienie tylko na interfejsie zewnętrznym, bez walidacji ograniczeń serwerowych
- Lekceważenie nietypowych i złożonych ról
Przykład z życia
Negatywny przypadek
Sprawdzano tylko UI i tylko trzy podstawowe role. W rezultacie użytkownicy z nietypową kombinacją ról uzyskali dostęp do funkcji administracyjnych через прямой переход по ссылке.
Zalety:
- Szybkie testowanie
- Prostota procesu
Wady:
- Krytyczna luka, ujawniona na produkcji
- Naruszenie bezpieczeństwa i zaufania użytkowników
Pozytywny przypadek
Do testowania stworzono konta testowe z różnymi kombinacjami ról, przeprowadzono audyt API i dostępu bezpośredniego. Błędy zostały wykryte i naprawione przed wydaniem.
Zalety:
- Wysoka jakość i bezpieczeństwo
- Zmniejszenie ryzyka wewnętrznych i zewnętrznych wycieków
Wady:
- Czasochłonność na tworzenie wielu kont testowych
- Zwiększenie ilości dokumentacji i koordynacji z rozwojem