Mobil Uygulama Güvenliği ve KVKK: Kullanıcı Verisini Doğru Toplamanın Yolu
Bir müşterimiz geçen yıl bize \"uygulamamız zaten şifreli, HTTPS kullanıyoruz\" diyerek gelmişti. Halbuki sunucuya giden trafik şifreliydi ama cihazda saklanan kullanıcı bilgileri düz metin olarak duruyordu. Güvenlik dediğimiz şey tek bir katman değil; ağ, depolama, kimlik doğrulama ve yasal uyum bir arada düşünülmesi gereken dört ayrı mesele.
Şifreleme sadece HTTPS demek değil
Aktarım sırasında TLS 1.2 veya üstü kullanmak artık standart, tartışmasız bir gereklilik. Ama asıl gözden kaçan nokta cihaz üzerinde saklanan veri. Android tarafında EncryptedSharedPreferences, iOS tarafında Keychain kullanmadan token veya kullanıcı bilgisi saklamak, cihaz root/jailbreak edildiğinde verinin dışarı sızmasına açık kapı bırakır. Şifreleme anahtarlarını kod içine gömmek de sık yapılan bir hata; anahtar yönetimi ayrı bir konu olarak ele alınmalı.
API tarafında neye dikkat edilir
Güvenli API iletişimi kurarken üç şey önceliklidir: kimlik doğrulama (JWT veya OAuth2 tabanlı token mekanizması), yetkilendirme (her endpoint'in gerçekten o kullanıcıya ait veriyi döndürdüğünden emin olmak) ve rate limiting. Bir e-ticaret uygulamasında karşılaştığımız klasik açık: kullanıcı ID'sini URL parametresi olarak geçip sunucu tarafında sahiplik kontrolü yapmamak. Böyle bir yapıda kullanıcı ID'yi değiştirerek başka birinin sipariş geçmişini görebiliyordu. Backend/API mimarisi kurulurken bu kontroller en başta yazılmalı, sonradan yamanmamalı.
KVKK'nın somut karşılığı ne
KVKK uyumu soyut bir hukuk metni değil, kod seviyesinde karşılığı olan bir şey. Aydınlatma metni ve açık rıza ekranı olmadan konum, telefon rehberi veya kamera erişimi istemek mevzuata aykırı. Veri minimizasyonu ilkesi de pratikte şu anlama geliyor: uygulamanın çalışması için gerekmeyen hiçbir veriyi toplama. Bir teslimat uygulamasında sürekli arka planda konum takibi yapmak yerine, sadece teslimat süresince konum almak hem pil tüketimini azaltır hem yasal riski düşürür.
Silme hakkı ve veri saklama süresi
Kullanıcı hesabını sildiğinde verilerin de gerçekten silinmesi gerekiyor — sadece "pasif" işaretlemek yetmiyor. Saklama sürelerini teknik olarak da uygulamak lazım: log kayıtları, ödeme geçmişi, destek talepleri için ayrı ayrı süre politikaları tanımlanmalı ve bunlar otomatik silme job'larıyla desteklenmeli. Bunu manuel süreçlere bırakmak genelde unutulup gidiyor.
Sertifika sabitleme ve kod obfuscation
Finansal işlem yapan veya hassas veri taşıyan uygulamalarda certificate pinning ekleyerek man-in-the-middle saldırılarına karşı ek bir katman kurulabilir. ProGuard/R8 (Android) ya da kod obfuscation araçlarıyla APK'nın tersine mühendislikle çözümlenmesi zorlaştırılmalı. Bunlar her uygulamada zorunlu değil ama bankacılık, sağlık, kişisel veri yoğun uygulamalarda göz ardı edilmemeli.
Güvenlik ve KVKK uyumu, proje planlamasının en başında mimari kararlara dahil edilmeli. Sonradan eklenmeye çalışıldığında hem maliyeti artıyor hem de bazı yapısal değişiklikler mümkün olmuyor. Android + iOS çift platform geliştiren ekiplerin her iki platformda da aynı güvenlik standardını uygulaması, kullanıcı güvenini korumanın en pratik yolu.
İlgili Yazılar
Projenize özel, şeffaf bir mobil uygulama fiyat teklifi için fiyat rehberimize göz atabilir veya bizimle iletişime geçebilirsiniz.
