Mobil Uygulamalarda Güvenli Oturum Yönetimi Nasıl Yapılır?
Mobil uygulamalarda güvenli oturum yönetimi, günümüz dijital ekosisteminde kullanıcı verilerinin korunması ve uygulama bütünlüğünün sağlanması için en kritik güvenlik katmanlarından biridir. 2026 yılı itibarıyla siber saldırı tekniklerinin evrimleşmesi, oturum çalma (session hijacking) ve yetkisiz erişim girişimlerini daha karmaşık hale getirmiştir. Bir mobil uygulamanın arka planında çalışan kimlik doğrulama mekanizmaları, sadece giriş yapma sürecini değil, kullanıcının uygulama içindeki tüm etkileşim süresince verinin nasıl işlendiğini ve korunduğunu ifade eder.
Güvenli bir oturum yönetimi stratejisi geliştirmek, yalnızca parolaların şifrelenmesinden ibaret değildir. Uygulama mimarisinde token yönetimi, güvenli depolama, sunucu taraflı doğrulama ve oturum sonlandırma süreçlerinin bir bütün olarak ele alınması gerekir. Bu rehberde, mobil uygulama geliştiricileri ve siber güvenlik uzmanları için oturum yönetiminin en iyi pratiklerini, 2026 standartlarına uygun şekilde adım adım inceleyeceğiz.
Oturum Yönetiminde Temel Güvenlik Prensipleri ve Mimari
Mobil uygulamalarda oturum yönetimi, kullanıcının kimliğini kanıtladığı andan itibaren başlayan ve oturumun sonlandırılmasına kadar devam eden bir yaşam döngüsüdür. Bu süreçte en temel kural, "güvene dayalı değil, doğrulamaya dayalı" bir mimari benimsemektir. Kullanıcının kimliğinin her API çağrısında doğrulanması, oturumun güvenliğini garanti altına alan temel faktördür.
Token Tabanlı Kimlik Doğrulama Nedir?
Modern mobil uygulamalarda oturum yönetimi için genellikle JWT (JSON Web Token) veya benzeri token tabanlı sistemler kullanılır. Kullanıcı başarılı bir şekilde giriş yaptığında, sunucu tarafından imzalanmış bir token üretilir. Bu token, kullanıcının oturumunu temsil eder ve sonraki tüm isteklerde sunucuya gönderilir. Ancak, token'ların güvenli bir şekilde oluşturulması ve saklanması, siber güvenlik açısından kritik öneme sahiptir.
Güvenli Depolama Mekanizmaları
Mobil cihazlarda oturum bilgilerini veya token'ları düz metin olarak saklamak, en büyük güvenlik açıklarından biridir. Geliştiriciler, cihazın işletim sistemi tarafından sağlanan güvenli depolama alanlarını kullanmalıdır. iOS tarafında "Keychain", Android tarafında ise "EncryptedSharedPreferences" veya "Keystore" sistemleri, hassas verilerin şifrelenerek saklanmasını sağlar.
Oturum Token'larının Yaşam Döngüsü ve Yönetimi
Oturum token'larının geçerlilik süresi, güvenlik ve kullanıcı deneyimi arasındaki hassas dengedir. Çok uzun süreli oturumlar, cihazın çalınması veya ele geçirilmesi durumunda büyük risk oluştururken, çok kısa süreli oturumlar kullanıcı deneyimini olumsuz etkiler.
Access Token ve Refresh Token Kullanımı
Güvenli bir oturum yönetiminde "Access Token" (Erişim Belirteci) ve "Refresh Token" (Yenileme Belirteci) ayrımı yapılmalıdır. Access token'ların ömrü oldukça kısa tutulmalı (örneğin 15-30 dakika), bu süre dolduğunda ise refresh token kullanılarak yeni bir access token alınmalıdır. Bu yöntem, bir access token'ın çalınması durumunda saldırganın sahip olduğu süreyi minimize eder.
Token İptal Mekanizması
Sadece token'ın süresinin dolmasını beklemek yeterli değildir. Kullanıcı uygulamadan çıkış yaptığında veya şüpheli bir etkinlik algılandığında, sunucu tarafında ilgili token'ın geçersiz kılınması gerekir. Bu işlem, sunucuda bir "kara liste" (blacklist) tutularak veya veritabanı üzerinden oturumun aktiflik durumunun kontrol edilmesiyle gerçekleştirilebilir.
Kritik Uyarı: Refresh token'larınızı asla uygulama içinde kalıcı olarak saklamayın. Eğer cihaz root edilmiş veya jailbreak yapılmışsa, güvenli depolama alanları bile risk altında olabilir. Uygulamanızda root/jailbreak tespiti yaparak bu cihazlarda oturum açılmasını kısıtlamayı düşünün.
Mobil Uygulamalarda Oturum Güvenliğini Artıran Adımlar
Güvenli bir oturum yönetimi sağlamak için geliştirme sürecinde uygulamanız gereken somut adımlar şunlardır:
- HTTPS ve SSL Pinning Kullanımı: İstemci ve sunucu arasındaki tüm iletişimin TLS üzerinden yapıldığından emin olun. SSL Pinning kullanarak, uygulamanın sadece sizin sertifikanıza sahip sunucularla iletişim kurmasını sağlayın.
- Çok Faktörlü Kimlik Doğrulama (MFA): Oturum açma sürecine mutlaka MFA ekleyin. SMS yerine uygulama tabanlı doğrulayıcılar (TOTP) veya biyometrik veriler (FaceID/Parmak İzi) tercih edilmelidir.
- Cihaz Bağlamı (Device Context): Oturum isteği geldiğinde cihazın IP adresi, cihaz modeli ve işletim sistemi sürümü gibi verileri kaydedin. Eğer oturum farklı bir cihazdan veya beklenmedik bir konumdan devam etmeye çalışırsa, oturumu sonlandırın.
- Oturum Zaman Aşımı (Timeout): Kullanıcı uygulama üzerinde işlem yapmıyorsa, belirli bir süre sonunda oturumu otomatik olarak sonlandırın.
Oturum Yönetimi Karşılaştırma Tablosu
| Yöntem | Güvenlik Seviyesi | Kullanıcı Deneyimi | Uygulama Zorluğu |
|---|---|---|---|
| Statik API Anahtarı | Çok Düşük | Yüksek | Kolay |
| Kısa Ömürlü JWT | Yüksek | Orta | Orta |
| JWT + Refresh Token | Çok Yüksek | Yüksek | Zor |
| Biyometrik Oturum Onayı | En Yüksek | Çok Yüksek | Çok Zor |
Saldırı Vektörleri ve Önleme Yöntemleri
Mobil uygulamalarda oturum yönetimi, çeşitli saldırı türlerine karşı savunmasız kalabilir. "Man-in-the-Middle" (Ortadaki Adam) saldırıları, trafiği dinleyerek token'ları ele geçirmeye çalışır. Bu saldırıları önlemek için yukarıda belirtilen SSL Pinning ve güçlü şifreleme protokolleri zorunludur.
Oturum Çalma (Session Hijacking)
Saldırganlar, kullanıcının cihazından çalınan token'ları kullanarak kendilerini kullanıcı gibi tanıtabilirler. Bunu önlemek için token'ları cihazın donanımsal güvenlik modüllerine (Secure Enclave gibi) bağlamak ve token'ı cihazın benzersiz kimliği (Device ID) ile eşleştirmek etkili bir yöntemdir.
Yeniden Oynatma (Replay) Saldırıları
Bir saldırgan, yakaladığı geçerli bir isteği tekrar sunucuya göndererek yetkisiz işlem yapmaya çalışabilir. Bunu engellemek için her isteğe benzersiz bir "nonce" (tek kullanımlık sayı) veya zaman damgası ekleyerek, sunucunun aynı isteği ikinci kez kabul etmemesini sağlayın.
Sıkça Sorulan Sorular
Mobil uygulamada oturum süresi ne kadar olmalıdır?
Oturum süresi, uygulamanın hassasiyetine göre değişir. Bankacılık uygulamaları için bu süre 5-10 dakika aktif değilse sonlanacak şekilde ayarlanırken, sosyal medya uygulamalarında daha uzun tutulabilir. Ancak güvenlik için her zaman kısa süreli access token ve refresh token yapısı önerilir.
JWT kullanırken nelere dikkat etmeliyim?
JWT içerisine asla hassas kullanıcı verileri (şifre, TC kimlik no vb.) koymayın. Token'ın imzasını doğrulamak için güçlü bir "secret key" kullanın ve bu anahtarı kodun içine gömmeyin; güvenli bir yapılandırma sunucusunda saklayın.
Kullanıcı cihazını değiştirirse oturum nasıl yönetilmeli?
Kullanıcı yeni bir cihazda giriş yaptığında, eski cihazdaki oturumun geçersiz kılınması veya kullanıcıya "diğer cihazlardaki oturumları kapat" seçeneğinin sunulması en güvenli yaklaşımdır.
SSL Pinning neden gereklidir?
SSL Pinning, uygulamanın sunucu sertifikasını önceden tanımasını sağlar. Bu sayede, saldırganlar sahte sertifikalarla güvenli bağlantıyı taklit edemez ve aradaki trafiği izleyemez.
Biyometrik giriş oturumu daha mı güvenli kılar?
Evet, biyometrik giriş (FaceID, parmak izi), cihazın fiziksel olarak kullanıcıda olduğunu kanıtlar. Bu, oturumun çalınması veya yetkisiz kişilerce kullanılması riskini büyük ölçüde azaltır.
Sonuç
Mobil uygulamalarda güvenli oturum yönetimi, tek seferlik bir kurulum değil, sürekli güncellenmesi gereken bir süreçtir. 2026 standartları, geliştiricilerin sadece kod yazmasını değil, aynı zamanda güvenliği bir tasarım prensibi olarak benimsemesini gerektiriyor. Token yönetimi, güvenli depolama ve düzenli güvenlik denetimleri ile uygulamalarınızı siber tehditlere karşı koruyabilirsiniz. Unutmayın, güvenlikte "sıfır güven" (zero trust) yaklaşımı, kullanıcılarınızın verilerini korumak için en sağlam temeli oluşturur. Teknik uygulamalarınızda karmaşık senaryolarla karşılaşırsanız, siber güvenlik mimarlarıyla çalışarak uygulamanızın özel ihtiyaçlarına yönelik çözümler üretmeniz tavsiye edilir.
Mobil Uygulamalarda Güvenli Oturum Yönetimi Nasıl Yapılır?
Mobil uygulama geliştirme sürecinde oturum yönetimi (session management), kullanıcı deneyimi ile güvenlik arasındaki hassas dengenin kurulduğu en kritik noktadır. Kullanıcıların kimliklerini doğruladıktan sonra, bu kimliğin uygulama içerisinde nasıl taşındığı ve saklandığı, uygulamanın siber saldırılara karşı direncini belirler.
Oturum Yönetiminde Temel Güvenlik Prensipleri ve Mimari
Güvenli bir oturum yönetimi mimarisi, "en az ayrıcalık" ve "derinlemesine savunma" ilkeleri üzerine inşa edilmelidir. Mobil dünyada oturumlar, web dünyasından farklı olarak uzun süreli ve kesintiye uğrayabilir bir yapıdadır.
Mimari Gereksinimler
- Durumsuz (Stateless) Mimari: Sunucu tarafında oturum bilgisini tutmak yerine, istemciye (mobil cihaza) güvenli tokenlar iletmek ölçeklenebilirliği artırır.
- Bağlamsal Doğrulama: Sadece token kontrolü değil; IP adresi, cihaz parmak izi (fingerprinting) ve konum gibi verilerin de oturumla ilişkilendirilmesi önerilir.
Token Tabanlı Kimlik Doğrulama Nedir?
Token tabanlı kimlik doğrulama, kullanıcının kimlik bilgilerini her istekte göndermek yerine, ilk girişte alınan bir "erişim anahtarı" ile işlem yapmasıdır. JWT (JSON Web Token) bu alanda endüstri standardı haline gelmiştir.
Güvenli Depolama Mekanizmaları
Mobil cihazlarda tokenların nerede saklandığı, saldırganların erişim yeteneğini doğrudan etkiler. Asla yerel veritabanlarında (SQLite) veya SharedPreferences/UserDefaults gibi şifrelenmemiş alanlarda token tutulmamalıdır.
Önerilen Depolama Araçları
- iOS: Keychain Services (Donanım seviyesinde şifreleme).
- Android: EncryptedSharedPreferences (Jetpack Security kütüphanesi ile).
Oturum Token'larının Yaşam Döngüsü ve Yönetimi
Tokenların ömrü, güvenlik ile kullanım kolaylığı arasındaki dengeyi temsil eder. Kısa ömürlü tokenlar saldırı penceresini daraltır ancak kullanıcıyı sık sık giriş yapmaya zorlayabilir.
Access Token ve Refresh Token Kullanımı
Access tokenlar kısa süreli (örneğin 15 dakika) olmalı, refresh tokenlar ise daha uzun süreli olup sadece yeni access token almak için kullanılmalıdır.
Güvenli Uygulama Akışı
- Kullanıcı giriş yapar.
- Sunucu, kısa ömürlü Access ve uzun ömürlü Refresh token gönderir.
- Access token süresi dolduğunda, uygulama sessizce Refresh token ile yenisini talep eder.
Token İptal Mekanizması
Kullanıcı "Çıkış Yap" dediğinde veya cihaz çalındığında tokenın geçersiz kılınması gerekir. Sunucu tarafında bir "Kara Liste" (Blacklist) tutulmalı veya veritabanı kontrollü bir yapı oluşturulmalıdır.
Mobil Uygulamalarda Oturum Güvenliğini Artıran Adımlar
- Cihaz Bağlama (Device Binding): Tokenı cihazın donanım kimliğiyle eşleştirin.
- Şüpheli Hareket İzleme: Olağandışı bir konumdan gelen isteklerde oturumu askıya alın.
- Biyometrik Kilitleme: Uygulamayı her açışta veya kritik işlemlerde biyometrik onay isteyin.
Oturum Yönetimi Karşılaştırma Tablosu
| Yöntem | Güvenlik Seviyesi | Kullanım Kolaylığı | Önerilen Kullanım |
|---|---|---|---|
| Statik API Key | Düşük | Yüksek | Önerilmez |
| JWT (Kısa Ömürlü) | Yüksek | Orta | Modern Mobil Uygulamalar |
| OAuth2 + PKCE | Çok Yüksek | Düşük | Finansal Uygulamalar |
Saldırı Vektörleri ve Önleme Yöntemleri
Oturum Çalma (Session Hijacking)
Saldırganlar, ağ trafiğini dinleyerek veya cihazın dosya sistemine erişerek tokenı ele geçirebilir. Bunu önlemek için TLS 1.3 ve sertifika sabitleme (SSL Pinning) zorunludur.
Yeniden Oynatma (Replay) Saldırıları
Bir isteğin yakalanıp tekrar gönderilmesidir. Her isteğe benzersiz bir nonce (tek kullanımlık sayı) veya zaman damgası ekleyerek bu saldırılar engellenebilir.
Sıkça Sorulan Sorular
Mobil uygulamada oturum süresi ne kadar olmalıdır?
Güvenlik seviyesine göre değişir. Bankacılık uygulamalarında 5-10 dakika hareketsizlik sonrası çıkış, sosyal medya uygulamalarında ise 30 gün gibi süreler tercih edilebilir.
JWT kullanırken nelere dikkat etmeliyim?
Tokenın imzasını (signature) her zaman sunucuda doğrulayın ve asla "none" algoritmasına izin vermeyin.
Kullanıcı cihazını değiştirirse oturum nasıl yönetilmeli?
Yeni cihazdan giriş yapıldığında, eski cihazdaki oturumların sunucu tarafında geçersiz kılınması (revoke) en güvenli yaklaşımdır.
SSL Pinning neden gereklidir?
SSL Pinning, uygulamanın sunucu sertifikasını önceden tanımasını sağlar. Bu sayede, saldırganlar sahte sertifikalarla güvenli bağlantıyı taklit edemez ve aradaki trafiği izleyemez.
Biyometrik giriş oturumu daha mı güvenli kılar?
Evet, biyometrik giriş (FaceID, parmak izi), cihazın fiziksel olarak kullanıcıda olduğunu kanıtlar. Bu, oturumun çalınması veya yetkisiz kişilerce kullanılması riskini büyük ölçüde azaltır.
Sonuç
Mobil uygulamalarda güvenli oturum yönetimi, tek seferlik bir kurulum değil, sürekli güncellenmesi gereken bir süreçtir. 2026 standartları, geliştiricilerin sadece kod yazmasını değil, aynı zamanda güvenliği bir tasarım prensibi olarak benimsemesini gerektiriyor. Token yönetimi, güvenli depolama ve düzenli güvenlik denetimleri ile uygulamalarınızı siber tehditlere karşı koruyabilirsiniz. Unutmayın, güvenlikte "sıfır güven" (zero trust) yaklaşımı, kullanıcılarınızın verilerini korumak için en sağlam temeli oluşturur. Teknik uygulamalarınızda karmaşık senaryolarla karşılaşırsanız, siber güvenlik mimarlarıyla çalışarak uygulamanızın özel ihtiyaçlarına yönelik çözümler üretmeniz tavsiye edilir.
Mobil Uygulama Oturum Yönetiminde Sık Yapılan Hatalar ve Çözümleri
Güvenlik açıklarının büyük bir kısmı, temel yapılandırma hatalarından kaynaklanır. Geliştiricilerin oturum yönetimi sırasında düştüğü en yaygın tuzakları anlamak, daha sağlam sistemler kurmanıza yardımcı olur.
Yaygın Geliştirici Hataları
- Hardcoded Anahtarlar: JWT imzalama anahtarlarının uygulama kaynak koduna gömülmesi. Bu anahtarlar mutlaka güvenli bir Key Management Service (KMS) üzerinde tutulmalıdır.
- Yetersiz Token Geçerlilik Süresi: Access token'ların süresinin çok uzun tutulması, çalınan bir token'ın uzun süre kullanılmasına neden olur.
- Güvensiz Depolama: Token'ların Shared Preferences veya Local Storage gibi şifrelenmemiş alanlarda saklanması.
- Loglama Hataları: Hassas oturum bilgilerinin veya token'ların uygulama loglarına yazdırılması.
Oturum Yönetiminde Kullanılan Araçlar ve Kütüphane Seçimi
Doğru araç seçimi, güvenlik mimarinizin temelini oluşturur. Mobil platformlarda yerel güvenlik modüllerini kullanmak, üçüncü taraf kütüphanelere bağımlılığı azaltır ve güvenliği artırır.
Önerilen Güvenlik Araçları
| Araç/Teknoloji | Kullanım Amacı | Güvenlik Seviyesi |
|---|---|---|
| Android Keystore | Kriptografik anahtarların donanım tabanlı saklanması | Çok Yüksek |
| iOS Keychain | Hassas verilerin şifreli olarak saklanması | Çok Yüksek |
| OAuth 2.0 / OpenID Connect | Standartlaştırılmış yetkilendirme akışları | Yüksek |
| App Attestation (SafetyNet/Play Integrity) | Cihazın bütünlüğünün doğrulanması | Yüksek |
İleri Seviye Oturum Güvenliği: Cihaz Bağlama (Device Binding)
Oturumun sadece bir token'a değil, belirli bir cihaza bağlı olması saldırganların işini zorlaştırır. Cihaz bağlama yöntemi, token'ın çalınması durumunda bile başka bir cihazda kullanılmasını engeller.
Uygulama Adımları
- Cihaz Tanımlayıcı Oluşturma: Cihaza özel, değiştirilemez bir donanım ID'si oluşturun.
- Token ile Eşleştirme: Sunucu tarafında token oluşturulurken, bu cihaz ID'sini token'ın "payload" kısmına veya veritabanına ekleyin.
- Doğrulama: Her API isteğinde, gelen token'daki cihaz ID'si ile o anki cihazın ID'sini karşılaştırın.
- İhlal Durumu: ID'ler uyuşmuyorsa oturumu derhal sonlandırın ve kullanıcıya bildirim gönderin.
Mobil Uygulamalarda Güvenli İletişim: SSL/TLS Konfigürasyonu
Oturum yönetimi ne kadar güvenli olursa olsun, verinin aktığı kanal güvensizse saldırganlar "Man-in-the-Middle" (MitM) saldırıları ile token'ları ele geçirebilir.
Güvenli İletişim İçin Checklist
- TLS 1.3 Kullanımı: Eski ve zayıf şifreleme algoritmalarını (TLS 1.0, 1.1) devre dışı bırakın.
- Certificate Transparency: Sunucu sertifikalarının şeffaflık günlüklerini kontrol edin.
- Proxy Kontrolü: Uygulamanın, kullanıcı tarafından tanımlanmış HTTP proxy'leri üzerinden veri göndermesini engelleyin.
Örnek Senaryo: Çok Faktörlü Kimlik Doğrulama (MFA) Entegrasyonu
Oturum güvenliğini artırmanın en etkili yollarından biri, sadece şifreye dayalı olmayan bir kimlik doğrulama katmanı eklemektir.
Senaryo: Kullanıcı uygulamaya giriş yaptıktan sonra, kritik işlemlerde (para transferi, ayar değişikliği) uygulamaya ek bir "Push-based MFA" veya "Time-based One-Time Password" (TOTP) zorunluluğu getirin. Bu, oturum çalınsa bile saldırganın kritik işlemleri yapmasını engeller.
Oturum Yönetimi Karşılaştırma: Yerel vs. Sunucu Tabanlı
Oturumların nerede ve nasıl yönetileceği, uygulamanızın performansını ve güvenliğini doğrudan etkiler.
| Özellik | Tamamen Sunucu Tabanlı | Token Tabanlı (JWT) |
|---|---|---|
| Ölçeklenebilirlik | Düşük (Session veritabanı yükü) | Yüksek (Stateless) |
| İptal Süreci | Anlık | Zor (Blacklist gerektirir) |
| Performans | Orta | Yüksek |
Saldırı Vektörleri ve Önleme Yöntemleri: Detaylı Analiz
Oturum Çalma (Session Hijacking)
Saldırganlar, kullanıcının oturum bilgilerini (cookie veya token) ele geçirerek kendilerini kullanıcı gibi tanıtırlar. Bunu önlemek için:
- Token'ları asla URL parametrelerinde taşımayın.
- HTTP header'larında
Authorization: Beareryapısını kullanın. - Uygulama arka plana alındığında veya ekran kilitlendiğinde oturumu askıya alın (suspend).
Yeniden Oynatma (Replay) Saldırıları
Saldırgan, yakaladığı geçerli bir isteği sunucuya tekrar gönderir. Bunu önlemek için:
- Nonce Kullanımı: Her isteğe benzersiz bir tek kullanımlık numara (nonce) ekleyin.
- Zaman Damgası (Timestamp): İsteğin geçerlilik süresini sınırlayın (örneğin 30 saniye).
Geliştiriciler İçin Güvenlik Denetim Listesi
Uygulamanızı yayına almadan önce şu adımları mutlaka kontrol edin:
- Kullanıcı şifreleri asla açık metin olarak saklanıyor mu? (Hashing algoritmaları: Argon2 veya bcrypt tercih edilmeli).
- Uygulama, root edilmiş veya jailbreak yapılmış cihazlarda çalışmayı reddediyor mu?
- Token yenileme (refresh) mekanizması, eski token'ı geçersiz kılıyor mu?
- Kullanıcı oturumu kapattığında (logout), sunucu tarafında tüm token'lar geçersiz kılınıyor mu?
Bu rehberde belirtilen yöntemler, mobil uygulama güvenliğinde standart kabul edilen "Defense in Depth" (Derinlemesine Savunma) prensibine dayanır. Güvenlik, bir varış noktası değil, sürekli bir yolculuktur. Yazılım mimarinizi güncel tutmak ve güvenlik yamalarını düzenli olarak uygulamak, kullanıcılarınızın güvenini kazanmanın tek yoludur.
Mobil Uygulama Oturum Yönetiminde Sık Yapılan Hatalar ve Çözümleri
Mobil uygulama geliştirme sürecinde, oturum yönetimi genellikle işlevselliğin gölgesinde kalabilmektedir. Ancak, hatalı yapılandırılmış bir oturum mekanizması, uygulamanın tüm güvenlik katmanlarını devre dışı bırakabilir. İşte en sık karşılaşılan hatalar ve profesyonel çözüm önerileri:
Yaygın Geliştirici Hataları
- Token'ların Güvensiz Depolanması: Token'ların
SharedPreferencesveyaUserDefaultsgibi şifrelenmemiş alanlarda tutulması, cihazın fiziksel erişiminde veya yedekleme dosyalarında verilerin sızmasına neden olur. Çözüm: Android içinEncryptedSharedPreferences, iOS içinKeychainkullanın. - Sonsuz Oturum Süresi: Kullanıcının oturumunun hiçbir zaman sonlanmaması, cihaz çalındığında veya başkasının eline geçtiğinde büyük bir risk oluşturur. Çözüm: Mutlak oturum süresi ve hareketsizlik süresi (idle timeout) tanımlayın.
- Sunucu Tarafında Token İptalinin Olmaması: Uygulama üzerinden "Çıkış Yap" denildiğinde sadece yerel token'ın silinmesi, sunucudaki token'ın hala geçerli kalmasına neden olur. Çözüm: Logout işlemi API üzerinden sunucuya bildirilmeli ve o token veritabanında kara listeye (blacklist) alınmalıdır.
Oturum Yönetiminde Kullanılan Araçlar ve Kütüphane Seçimi
Doğru kütüphane seçimi, güvenlik açıklarını minimize etmenin ilk adımıdır. Kendi oturum yönetimi protokolünüzü yazmak yerine, endüstri standardı olan araçları tercih etmelisiniz.
Önerilen Güvenlik Araçları
| Araç/Teknoloji | Kullanım Amacı | Güvenlik Katkısı |
|---|---|---|
| AppAuth | OAuth2 ve OpenID Connect | Standartlara uygun, güvenli token yönetimi. |
| SQLCipher | Yerel Veritabanı Şifreleme | Yerel verilerin fiziksel çalınmaya karşı korunması. |
| BiometricPrompt | Biyometrik Kimlik Doğrulama | Oturumun biyometrik veri ile kilitlenmesi. |
İleri Seviye Oturum Güvenliği: Cihaz Bağlama (Device Binding)
Cihaz bağlama, bir oturumun sadece belirli bir fiziksel cihazla ilişkilendirilmesini sağlar. Bu yöntem, token çalınsa bile saldırganın başka bir cihazdan giriş yapmasını imkansız kılar.
Uygulama Adımları
- Cihaz Tanımlayıcı Oluşturma: Cihazın donanım özelliklerini (IMEI yerine, cihazın donanımına özel benzersiz donanım hash'i) kullanarak bir ID oluşturun.
- Token ile Eşleştirme: Kullanıcı giriş yaptığında, sunucuya cihaz ID'sini gönderin. Sunucu, verilen token'ı bu cihaz ID'si ile veritabanında eşleştirsin.
- Doğrulama: Her API isteğinde, gelen token'ın o cihazdan gelip gelmediğini kontrol edin. Eğer cihaz ID'si uyuşmuyorsa, oturumu anında sonlandırın.
Mobil Uygulamalarda Güvenli İletişim: SSL/TLS Konfigürasyonu
Oturum yönetimi, iletim hattı güvenli değilse anlamsızdır. SSL/TLS, verinin yolda dinlenmesini (Man-in-the-Middle saldırıları) engeller.
Güvenli İletişim İçin Checklist
- SSL Pinning Uygulayın: Uygulamanın sadece belirli bir sertifikaya sahip sunucuyla konuşmasını sağlayın. Bu, sahte sertifika saldırılarını engeller.
- TLS 1.2 ve Üzeri: Eski protokolleri (SSLv3, TLS 1.0) tamamen devre dışı bırakın.
- Güçlü Cipher Suite Seçimi: Zayıf şifreleme algoritmalarını destekleyen sunucu konfigürasyonlarından kaçının.
Örnek Senaryo: Çok Faktörlü Kimlik Doğrulama (MFA) Entegrasyonu
Sadece kullanıcı adı ve şifre artık yeterli değildir. Oturum yönetimini güçlendirmek için MFA zorunluluğu getirin:
Kullanıcı giriş bilgileriyle sunucuya istek gönderir. Sunucu, geçerli bir şifre almasına rağmen "MFA_REQUIRED" yanıtı döner. Uygulama, kullanıcının e-postasına veya SMS'ine gelen kodu doğrular. Ancak bu kod doğrulandıktan sonra, oturumu başlatan asıl "Access Token" üretilir. Bu yöntem, şifre sızdırılsa bile saldırganın oturum açmasını engeller.
Oturum Yönetimi Karşılaştırma: Yerel vs. Sunucu Tabanlı
| Özellik | Yerel (Client-Side) | Sunucu Tabanlı (Server-Side) |
|---|---|---|
| Ölçeklenebilirlik | Yüksek | Düşük |
| Güvenlik Kontrolü | Zor | Çok Yüksek |
| İptal Mekanizması | Zor (Blacklist gerekir) | Kolay |
Saldırı Vektörleri ve Önleme Yöntemleri: Detaylı Analiz
Oturum Çalma (Session Hijacking)
Saldırganlar, ağ trafiğini izleyerek veya cihazdaki güvensiz depolama alanlarına erişerek oturum token'ını ele geçirebilirler. Bunu engellemek için:
- Token'ları asla URL parametrelerinde göndermeyin.
- HTTP Only cookie veya güvenli header'lar (Authorization: Bearer) kullanın.
- Oturum token'larının ömrünü kısa tutun (örneğin 15-60 dakika).
Yeniden Oynatma (Replay) Saldırıları
Saldırgan, yakaladığı geçerli bir isteği sunucuya tekrar gönderir. Bunu önlemek için:
- Nonce Kullanımı: Her isteğe benzersiz bir tek kullanımlık numara (nonce) ekleyin.
- Zaman Damgası (Timestamp): İsteğin geçerlilik süresini sınırlayın (örneğin 30 saniye).
Geliştiriciler İçin Güvenlik Denetim Listesi
Uygulamanızı yayına almadan önce şu adımları mutlaka kontrol edin:
- Kullanıcı şifreleri asla açık metin olarak saklanıyor mu? (Hashing algoritmaları: Argon2 veya bcrypt tercih edilmeli).
- Uygulama, root edilmiş veya jailbreak yapılmış cihazlarda çalışmayı reddediyor mu?
- Token yenileme (refresh) mekanizması, eski token'ı geçersiz kılıyor mu?
- Kullanıcı oturumu kapattığında (logout), sunucu tarafında tüm token'lar geçersiz kılınıyor mu?
- Ekran kilitlendiğinde veya uygulama arka plana geçtiğinde oturumu askıya alın (suspend).

Yorumlar (0)
Yorum Yaz