Mobil uygulama güvenliği, kullanıcı verilerini korumak ve uygulamanın bütünlüğünü sağlamak için kritik öneme sahiptir. Bu rehberde, iOS ve Android platformları için güvenlik best practice'lerini ele alacağız.
Veri Güvenliği
Güvenli Veri Depolama
- iOS: Keychain Services kullanın
- Android: EncryptedSharedPreferences veya Keystore
- SQLite veritabanlarını şifreleyin (SQLCipher)
- Hassas verileri asla düz metin olarak saklamayın
// Android - EncryptedSharedPreferences
val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
val sharedPrefs = EncryptedSharedPreferences.create(
context,
"secret_prefs",
masterKey,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
Veri İletimi
- HTTPS zorunlu kullanın
- Certificate pinning uygulayın
- TLS 1.3 tercih edin
- Hassas verileri URL parametrelerinde taşımayın
Kimlik Doğrulama
Güvenli Oturum Yönetimi
- OAuth 2.0 / OpenID Connect kullanın
- JWT token'ları güvenli saklayın
- Token expiration süreleri kısa tutun
- Refresh token rotation uygulayın
Biyometrik Kimlik Doğrulama
- Face ID / Touch ID (iOS)
- Fingerprint / Face Unlock (Android)
- Fallback mekanizması zorunlu
Kod Güvenliği
Obfuscation (Karıştırma)
- Android: ProGuard / R8
- iOS: LLVM obfuscation
- String encryption
# Android - ProGuard rules
-keep class com.myapp.model.** { *; }
-keepclassmembers class * {
@com.google.gson.annotations.SerializedName <fields>;
}
Reverse Engineering Koruması
- Root/Jailbreak detection
- Debugger detection
- Emulator detection
- Tamper detection
API Güvenliği
API Key Yönetimi
- API key'leri kod içinde hardcode etmeyin
- Backend proxy kullanın
- Rate limiting uygulayın
- API versiyonlama
Input Validation
- Tüm kullanıcı girdilerini validate edin
- SQL injection koruması
- XSS koruması (WebView'lar için)
Platform Spesifik Güvenlik
iOS
- App Transport Security (ATS) aktif tutun
- Data Protection API kullanın
- Keychain access groups ayarlayın
Android
- android:exported="false" (gereksiz componentler için)
- Content provider permissions
- Network security config
<!-- network_security_config.xml -->
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">api.myapp.com</domain>
<pin-set>
<pin digest="SHA-256">base64encodedpin=</pin>
</pin-set>
</domain-config>
</network-security-config>
Test ve Audit
- OWASP Mobile Security Testing Guide (MSTG)
- Penetration testing
- Static Application Security Testing (SAST)
- Dynamic Application Security Testing (DAST)
- Dependency vulnerability scanning
Güvenlik Checklist
- ☐ HTTPS zorunlu
- ☐ Certificate pinning aktif
- ☐ Hassas veriler şifreli
- ☐ Secure storage kullanılıyor
- ☐ Root/Jailbreak detection
- ☐ Code obfuscation
- ☐ Input validation
- ☐ Secure authentication
- ☐ Logging'de hassas veri yok
- ☐ Backup disabled (gerekirse)
Mobil uygulama güvenliği, sürekli dikkat gerektiren bir süreçtir. OWASP Mobile Top 10'u düzenli takip edin ve güvenlik güncellemelerini ihmal etmeyin.