Mobile Application Development and Security - Cheatsheet
Architektur mobiler Anwendungen
Definition:
Grundlegende Struktur und Design von mobilen Anwendungen, die den Ablauf und die Interaktion zwischen verschiedenen Komponenten definiert.
Details:
- Komponenten: UI, Backend, API, Datenbank
- Design-Muster: MVC, MVP, MVVM
- Plattformen: iOS, Android
- Technologien: Native, Hybrid, Cross-Platform
- Sicherheitsaspekte: Authentifizierung, Datenverschlüsselung, sichere API-Kommunikation
Unterschiede zwischen iOS und Android
Definition:
Vergleich zwischen iOS und Android Plattformen in Bezug auf Mobile Application Development und Sicherheit.
Details:
- Entwicklungsumgebungen: iOS nutzt Xcode und Swift/Objective-C, Android verwendet Android Studio und Java/Kotlin.
- App-Verteilung: iOS über den Apple App Store, Android über den Google Play Store und andere Drittanbieter.
- Sicherheitsrichtlinien: iOS hat striktere Prüfprozesse für Apps, während Android offener, aber anfälliger für Malware ist.
- Betriebssystem-Updates: iOS bietet häufige Updates für alle kompatiblen Geräte, während Android-Updates oft vom Gerätehersteller abhängen.
- Benutzeroberfläche: iOS ist bekannt für seine einheitliche Benutzeroberfläche, Android bietet mehr Anpassungsmöglichkeiten.
Sicherheitsrisiken in mobilen Anwendungen und Bedrohungsmodelle
Definition:
Sicherheitsrisiken in mobilen Anwendungen: Schwachstellen und Bedrohungen, die Integrität, Vertraulichkeit und Verfügbarkeit von Daten gefährden; Bedrohungsmodelle: systematische Identifikation und Bewertung potentieller Bedrohungen.
Details:
- Datendiebstahl: durch ungeschützte API-Schnittstellen oder unsichere Datenübertragung.
- Schadsoftware: installiert durch bösartige Apps oder Schwachstellen in Apps.
- Phishing-Angriffe: Benutzer durch gefälschte Apps oder Links zur Preisgabe sensibler Informationen verleitet.
- Bedrohungsmodelle: STRIDE, DREAD, und OWASP Mobile Top Ten.
- STRIDE: Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege.
- DREAD: Damage Potential, Reproducibility, Exploitability, Affected Users, Discoverability.
Statische Codeanalyse und dynamische Analyse
Definition:
Statische Codeanalyse: Untersuchung des Quellcodes, ohne das Programm auszuführen. Dynamische Analyse: Untersuchung des Programms während der Ausführung im Laufzeitumfeld.
Details:
- Statische Codeanalyse:
- - Findet Sicherheitslücken, Syntaxfehler und Schwachstellen vor der Laufzeit.
- - Tools: SonarQube, PMD, FindBugs.
- Dynamische Analyse:
- - Bewertet das Verhalten der Anwendung während der Ausführung.
- - Überwacht Speicherverbrauch, Performance und Runtime-Anomalien.
- - Tools: Valgrind, Dyba, Instrumentation Frameworks.
Sichere Codierungspraktiken und sichere APIs
Definition:
Implementierung von Sicherheitsmechanismen beim Schreiben von Code und beim Design von APIs, um Schwachstellen zu minimieren und Angriffe zu verhindern.
Details:
- Verwende parameterisierte Abfragen (\texttt{Prepared Statements}) anstelle von dynamischem SQL.
- Input-Validierung und -Sanitierung, besonders bei Benutzereingaben.
- Vermeide harte Kodierung von Passwörtern und vertraulichen Informationen im Code.
- Setze sichere Authentifizierungs- und Autorisierungsmechanismen ein (z.B. OAuth, JWT).
- Über HTTPS kommunizieren, SSL/TLS verwenden.
- Vermeide die Offenlegung detaillierter Fehlermeldungen an Endbenutzer.
- Regelmäßiges Überprüfen und Aktualisieren von Abhängigkeiten und Bibliotheken.
- \texttt{Rate Limiting} und Schutz gegen \texttt{Brute Force}-Attacken bei Authentifizierung.
- Nutzung von API-Gateways und Firewalls zur Absicherung von APIs.
- Implementierung von Logging und Monitoring.
Authentifizierung, Autorisierung und Datenschutz
Definition:
Authentifizierung: Identitätsprüfung. Autorisierung: Rechtevergabe. Datenschutz: Schutz persönlicher Daten.
Details:
- Authentifizierung: Überprüfung der Benutzeridentität über Benutzername/Passwort, biometrische Daten oder Tokens.
- Autorisierung: Erlaubnislevel, was ein Benutzer innerhalb einer Anwendung tun darf, z.B. *RBAC* (Role-Based Access Control).
- Datenschutz: Schutz der Privatsphäre durch Verschlüsselung, Anonymisierung und gesetzliche Anforderungen wie DSGVO (Datenschutz-Grundverordnung).
Frameworks und Werkzeugen für plattformübergreifende Entwicklung
Definition:
Frameworks und Werkzeuge zur Entwicklung von Anwendungen, die auf mehreren Plattformen laufen (z.B., iOS, Android).
Details:
- Xamarin: Erweiterbar, verwendet C#, integriert in Visual Studio.
- React Native: JavaScript-basiert, ermöglicht native Komponenten, Hot-Reloading.
- Flutter: Verwendet Dart, schnelle Entwicklung durch Hot-Reload, eigene UI-Engine.
- Apache Cordova: Nutzt HTML, CSS, JavaScript, Zugriff auf native APIs über Plugins.
- Ionic: Basierend auf Angular, verwendet Web-Technologien, unterstützt Progressive Web Apps.
Lebenszyklus und Performance-Optimierungen mobiler Anwendungen
Definition:
Lebenszyklus mobiler Anwendungen umfasst die Stadien von Erstellen über Ausführen bis zu Zerstören der Anwendung. Performance-Optimierungen zielen auf Verbesserung der Effizienz und Benutzererfahrung.
Details:
- Lebenszyklus: onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()
- Wichtig für Speicherverwaltung und Energieeffizienz
- Optimierungen: Code-Minimierung, effiziente Algorithmen, Ressourcenverwaltung
- Spezifische Techniken: Lazy Loading, Caching, Database Indexing
- Tools: Android Profiler, Xcode Instruments