Security Cheat Sheet

Zasady bezpieczeństwa w aplikacjach mobilnych (OWASP) - Cheat Sheet


KategoriaNajważniejsze zasadyNarzędzia / Standardy
Architektura & DesignSecure by Design, zasada najmniejszych uprawnień, bezpieczne API, kontrola łańcucha dostawNIST, IETF, OAuth2, JWT, Vulnerable Dependency CS
Auth & AuthorizationSerwerowe sprawdzanie auth, brak hardcoded creds, złożone hasła/PIN-y, biometria z fallbackiem, bezpieczne sesjeOWASP Auth CS, Keychain (iOS), Keystore (Android)
Data Storage & PrivacySzyfrowanie danych w spoczynku i transmisji, unikanie wycieków (logi, cache), minimalizacja PIISecure Enclave, StrongBox, Logging CS
Network CommunicationTylko HTTPS, cert pinning, brak ignorowania certyfikatów, silne algorytmyPinning CS, TLS/SSL, CA certs
UI SecurityMaskowanie pól, powiadomienia o logowaniach, walidacja wejścia i wyjściaInput Validation CS, Output Validation CS
Code QualityAnaliza statyczna, code review pod kątem security, aktualne bibliotekiSAST, dependency management
Application IntegrityWyłączenie debug, obfuskacja binarki, runtime anti-tampering, wykrywanie root/jailbreakProGuard, runtime checks, signature validation
TestingPentesty (crypto, auth), testy automatyczne, testy UX zabezpieczeńOWASP MASVS, OWASP MASTG
Post-DeploymentIncident response, szybkie aktualizacje, monitoring i analitykaCI/CD, app store updates, SIEM
AndroidProGuard, brak danych w SharedPreferences, Keystore (StrongBox/TEE), Play Integrity APIAndroid docs, Play Integrity API docs
iOS/iPadOSShortcuts/Siri zabezpieczenia, bezpieczne Deep Links, maskowanie widgetów, Secure Enclave, App Attest, DeviceCheckApple Developer docs (SiriKit, App Attest, ATS)
DodatkoweATS (App Transport Security), brak danych w plist, kontrola background refresh, App GroupsATS, Info.plist security configs

Rozpisanie najważniejszych punktów:


  1. Architektura i projektowanie
  • Secure by Design — bezpieczeństwo od początku (least privilege, defense in depth, separation of concerns, standardy NIST/IETF).
  • Bezpieczne API — uwierzytelnianie (OAuth2, JWT), rotacja kluczy i tokenów.
  • Zasada najmniejszych uprawnień — aplikacja żąda tylko niezbędnych uprawnień; bezpieczne ustawienia domyślne.
  • Łańcuch dostaw — weryfikacja bibliotek zewnętrznych, podpisywanie aplikacji, kontrola aktualizacji i incydentów w komponentach.
  1. Uwierzytelnianie i autoryzacja
  • Nie ufaj klientowi — wszystkie kontrole serwerowe, szyfrowanie danych lokalnych, unikanie ID urządzeń jako autoryzacji.
  • Obsługa poświadczeń — brak hardcodowania, tokeny zamiast haseł, szyfrowanie w transmisji.
  • Hasła i PIN-y — złożone hasła, brak krótkich PIN-ów, przechowywanie w Keystore/Keychain.
  • Biometria — używać natywnych metod, zawsze z fallbackiem (PIN/hasło).
  • Zarządzanie sesją — timeout, remote logout, losowe tokeny, bezpieczne przechowywanie.
  • Operacje wrażliwe — ponowne uwierzytelnienie przy zmianie hasła, płatnościach itp.
  1. Przechowywanie danych i prywatność
  • Szyfrowanie — dane w spoczynku i transmisji, korzystanie z API systemowych i Secure Enclave/StrongBox.
  • Unikanie wycieków — kontrola logów, cache, snapshotów aplikacji.
  • HTTPS — obowiązkowo, brak komunikacji plaintext.
  • Dane osobowe (PII) — minimalizacja, anonimizacja, automatyczne usuwanie, zgoda użytkownika.
  1. Komunikacja sieciowa
  • Nie ufaj sieci — zakładaj możliwość przechwycenia danych.
  • Protokół — tylko HTTPS, brak ignorowania certyfikatów, silne algorytmy szyfrowania.
  • Pinning certyfikatów — rozważyć, w zależności od ryzyka.
  • Brak SMS do transmisji danych.
  1. Interfejs użytkownika
  • Maskowanie danych — np. przy polach haseł.
  • Powiadomienia — o aktywnościach bezpieczeństwa (np. logowanie z nowego urządzenia).
  • Walidacja wejścia/wyjścia — sanizacja danych (ochrona przed XSS/SQLi).
  1. Jakość kodu
  • Analiza statyczna — automatyczne narzędzia SAST.
  • Code review — pod kątem bezpieczeństwa.
  • Aktualizacja bibliotek — eliminacja znanych podatności.
  1. Integralność aplikacji
  • Wyłączone debugowanie, obfuskacja kodu.
  • Kontrole w czasie uruchomienia: wykrywanie hooków, emulatorów, root/jailbreak.
  • Walidacja podpisu aplikacji.
  • Reakcja na wykryte manipulacje (np. ograniczenie funkcjonalności).
  1. Testowanie
  • Pentesty — sprawdzanie kryptografii, prób logowania bez sesji, analiza backendu.
  • Testy automatyczne — ciągłe sprawdzanie mechanizmów bezpieczeństwa.
  • Testy użyteczności — zabezpieczenia nie mogą obniżać UX.
  1. Po wdrożeniu
  • Incident response — plan reagowania.
  • Aktualizacje — szybkie poprawki, mechanizmy wymuszania update.
  • Monitoring — wykrywanie i reagowanie w czasie rzeczywistym.
  1. Rekomendacje platformowe

Android

  • Obfuskacja (ProGuard).
  • Brak przechowywania danych w SharedPreferences.
  • Wyłączone backupy.
  • Keystore ze sprzętowym wsparciem (TEE/StrongBox).
  • Play Integrity API (następca SafetyNet).

iOS/iPadOS

  • Shortcuts i Siri — zabezpieczenie przed uruchamianiem funkcji na zablokowanym urządzeniu.
  • Deep Links — walidacja, zabezpieczenia przed pominięciem logowania.
  • WidgetKit — maskowanie danych na lock screenie.
  • Secure Enclave — przechowywanie kluczy i operacje kryptograficzne.
  • App Attest i DeviceCheck — kontrola integralności aplikacji i urządzenia.
  1. Dodatkowe zalecenia
  • Kontrola background refresh, App Groups, ATS (App Transport Security).
  • Brak przechowywania wrażliwych danych w plist.
  • Wykorzystanie sprzętowych modułów bezpieczeństwa.


References