Przejdź do głównej zawartości

Testy api

Testowanie bezpieczeństwa API to jeden z najważniejszych elementów zabezpieczania nowoczesnych aplikacji. Poniższa checklista pomaga przeprowadzić skuteczną ocenę podatności interfejsów API – zarówno REST, jak i GraphQL.

✅ Checklista testów API

🔑 Uwierzytelnianie i autoryzacja

  • Czy API wymaga uwierzytelnienia (token JWT, OAuth)?
  • Czy istnieje ochrona przed brute-force (rate limiting, CAPTCHA)?
  • Czy dostęp do zasobów jest zgodny z poziomem uprawnień (RBAC/ABAC)?
  • Czy użytkownik może zmodyfikować token, by uzyskać dostęp do cudzych danych (test IDOR)?
  • Czy token JWT wygasa i ma poprawnie ustawiony algorytm (np. RS256 zamiast none)?

📦 Dane wejściowe i walidacja

  • Czy dane są walidowane po stronie serwera (typy, długość, wzorce)?
  • Czy można wstrzyknąć kod (XSS, SQLi, command injection)?
  • Czy API akceptuje tylko oczekiwane metody (GET, POST, PUT, DELETE)?
  • Czy endpointy są zabezpieczone przed nadużyciem metod OPTIONS, TRACE?

🔍 Filtrowanie danych i ujawnienia

  • Czy można pobrać dane innych użytkowników modyfikując identyfikator?
  • Czy odpowiedzi nie zawierają wrażliwych informacji (e-maile, tokeny, stacktrace)?
  • Czy błędy są obsługiwane bez wycieku informacji (np. kod 500 bez detali)?
  • Czy GraphQL introspection jest wyłączone w środowisku produkcyjnym?

🛡️ Bezpieczeństwo transportu

  • Czy komunikacja odbywa się wyłącznie po HTTPS?
  • Czy certyfikat SSL jest ważny i poprawnie skonfigurowany?
  • Czy HSTS jest aktywny dla subdomen?

📉 Rate limiting i nadużycia

  • Czy API posiada ograniczenia zapytań (Rate Limit)?
  • Czy odpowiedź zawiera nagłówki Retry-After, X-RateLimit-Limit?
  • Czy istnieją mechanizmy ochrony przed automatyzacją (np. ReCAPTCHA dla wrażliwych akcji)?

🧪 Narzędzia do testowania API

  • Postman – manualne testy, kolekcje testowe, testy autoryzacji
  • Burp Suite / ZAP – proxy + analiza żądań API
  • Insomnia – alternatywa dla Postmana z integracją JWT/OAuth
  • nmap / nuclei / ffuf – testy endpointów i fuzzing
  • GraphQL Voyager / InQL – do testów API GraphQL

📁 Dodatkowe punkty

  • Czy endpointy wewnętrzne są oddzielone od publicznych?
  • Czy API ma wersjonowanie (np. /api/v1/)?
  • Czy jest dokumentacja (Swagger/OpenAPI) i czy nie ujawnia zbyt wiele?
  • Czy logowane są wszystkie nieautoryzowane próby dostępu?

API jest często tylnymi drzwiami aplikacji. Jeśli nie są odpowiednio zabezpieczone – są pierwszym celem atakującego.