Mobil Uygulama Güvenliği: Veri Şifreleme ve Yetkilendirme
"Uygulamamız güvenli mi?" sorusu genellikle proje bittikten sonra sorulur — oysa güvenlik, sonradan eklenen bir özellik değil, baştan tasarlanan bir mimari kararıdır. Bu yazıda mobil uygulamalarda veri şifrelemenin, cihazda güvenli veri saklamanın ve token tabanlı yetkilendirmenin nasıl çalıştığını, uluslararası kabul görmüş bir çerçeve üzerinden anlatıyoruz.
OWASP Mobile Top 10 Nedir?
OWASP Mobile Top 10, kâr amacı gütmeyen OWASP Foundation tarafından hazırlanan, mobil uygulamalarda en sık karşılaşılan on güvenlik riskini sıralayan, dünya genelinde referans kabul edilen bir listedir. Bu liste; yetersiz kimlik doğrulama, güvensiz veri saklama ve yetersiz şifreleme gibi riskleri kapsar. Bir mobil uygulama geliştirirken bu çerçeveyi bilmek, "hangi önlemler gerçekten önemli" sorusuna endüstri standardı bir cevap verir.
Kısa cevap
Bir mobil uygulamada asgari güvenlik, şifreli veri aktarımı (TLS), cihazda güvenli veri saklama ve token tabanlı yetkilendirmeyi kapsar; bu üçü mobilsepeti.com.tr'nin tüm projelerinde varsayılan standarttır.
Veri Aktarım Sırasında Şifreleme (TLS)
Uygulamanız sunucunuzla her iletişim kurduğunda (giriş yaparken, veri çekerken), bu iletişimin TLS (Transport Layer Security) ile şifrelenmesi gerekir — bu, tarayıcıda gördüğünüz "https" ile aynı teknolojidir. Şifrelenmemiş bir bağlantı, kullanıcının şifresinin veya kişisel bilgisinin aynı ağdaki (ör. halka açık bir wifi) kötü niyetli biri tarafından okunabilmesi anlamına gelir. mobilsepeti.com.tr'de barındırdığımız tüm projelerde SSL sertifikası standart olarak dahildir.
Cihazda Veri Saklama: Keychain ve Keystore
Kullanıcının oturum bilgisi veya hassas bir veri, telefonda düz metin olarak değil, işletim sisteminin sunduğu güvenli depolama alanında saklanmalıdır — iOS'ta buna Keychain, Android'de Keystore denir. Bu alanlar, işletim sistemi tarafından şifrelenir ve diğer uygulamaların erişimine kapalıdır. Basit bir dosyaya veya paylaşılan bir alana kaydedilen hassas veri, cihaz ele geçirildiğinde veya kötü amaçlı bir uygulama tarafından okunma riskiyle karşı karşıya kalır.
Yetkilendirme: Token Tabanlı Kimlik Doğrulama
| Katman | Ne Sağlar |
|---|---|
| Şifre/kimlik doğrulama | Kullanıcının gerçekten iddia ettiği kişi olduğunu doğrular |
| Token (ör. JWT) | Her istekte şifre girmeden yetkili erişim sağlar |
| Token süresi (expiry) | Çalınan bir token'ın süresiz kullanılmasını önler |
| Rol bazlı erişim | Kullanıcının yalnızca yetkili olduğu veriyi görmesini sağlar |
Kullanıcı giriş yaptığında, sunucu ona geçici bir "token" (genellikle JWT formatında) verir; uygulama bu token'ı sonraki her istekte kullanır, kullanıcı her seferinde şifresini yeniden girmez. Token'ın belirli bir süre sonra geçersiz olması (expiry), çalınmış bir token'ın süresiz şekilde kötüye kullanılmasını önler.
API Güvenliği: Uygulama ile Sunucu Arasındaki Bağlantı
Mobil uygulamanız, sunucunuzla bir API üzerinden konuşur; bu API'nin de kendi güvenlik katmanları olmalıdır. Her istekte kimlik doğrulaması yapılmalı, aşırı istek gönderimini sınırlayan bir mekanizma (rate limiting) bulunmalı ve hata mesajları, saldırganlara sistemin iç yapısı hakkında ipucu vermeyecek şekilde genel tutulmalıdır. Bu önlemler, kullanıcı arayüzünde görünmez ama uygulamanın güvenlik omurgasını oluşturur.
Düzenli Güvenlik Güncellemelerinin Rolü
Güvenlik, bir kez kurulup unutulan bir özellik değildir. Kullanılan kütüphanelerde zamanla güvenlik açıkları keşfedilebilir; bu nedenle bağımlılıkların düzenli güncellenmesi, bakım sürecinin önemli bir parçasıdır. Yıllarca güncellenmeyen bir uygulama, başlangıçta güvenli kurgulanmış olsa bile zamanla bilinen açıklara maruz kalabilir.
Birden fazla personeli olan bir kurumsal uygulamayı ele alalım. Doğru kurgulanmamış bir yetkilendirme sisteminde, sıradan bir personel hesabı, aslında yalnızca yöneticinin görmesi gereken maaş veya rapor verisine API üzerinden erişebilir hale gelebilir — arayüzde bu ekran gösterilmese bile, arka uçta yetki kontrolü yoksa veri teknik olarak erişilebilir kalır. Doğru kurgulanmış bir sistemde, her API isteği kullanıcının rolüne göre sunucu tarafında da kontrol edilir; yalnızca arayüzde gizlemek yeterli değildir.
Sık Yapılan Hatalar
En sık düşülen üç hata şöyle: Birincisi, yalnızca arayüzde erişim kısıtlamaktır — bir ekranı gizlemek, o veriye API üzerinden erişilemeyeceği anlamına gelmez; yetki kontrolü sunucu tarafında da yapılmalıdır. İkincisi, hassas veriyi cihazda düz metin olarak saklamaktır — bu, Keychain/Keystore gibi güvenli alanlar varken gereksiz bir risk yaratır. Üçüncüsü, token'a süresiz geçerlilik tanımaktır — süresi olmayan bir token, çalınması durumunda sınırsız bir risk kapısı açık bırakır.
mobilsepeti.com.tr'de Güvenlik Yaklaşımı
Tüm üyelik sistemli projelerimizde şifreli veri aktarımı, güvenli oturum yönetimi ve token tabanlı yetkilendirme standart olarak uygulanır. Sektöre özgü ek güvenlik gereksinimleri (ör. sağlık verisi) için sağlık sektörü rehberimize, kurumsal rol yönetimi için kurumsal uygulama rehberimize göz atabilirsiniz.
Sık Sorulan Sorular
Uygulamamda şifreleme olup olmadığını nasıl anlarım?
Bağlantının https (SSL/TLS) üzerinden çalışıp çalışmadığı, veri aktarımının şifreli olduğunun temel göstergesidir. Cihazda saklanan hassas verinin şifrelenip şifrelenmediği ise geliştirme sürecinde teknik olarak doğrulanmalıdır.
Küçük bir MVP için de güvenlik önlemleri gerekir mi?
Evet, temel önlemler (şifreli bağlantı, güvenli oturum yönetimi) her uygulamada, kapsamı ne olursa olsun standarttır. Kapsamlı erişim kontrolü gibi ileri seviye önlemler ise uygulamanın büyüklüğüne göre değerlendirilir.
Token tabanlı yetkilendirme ile şifre tabanlı giriş aynı şey mi?
Hayır. Şifre, kullanıcının kimliğini kanıtlamasını sağlar (kimlik doğrulama); token ise bu doğrulamadan sonra verilen ve kullanıcının her istekte yeniden şifre girmeden yetkili işlemler yapmasını sağlayan geçici bir anahtardır (yetkilendirme).
Projenizi konuşalım
Uygulama fikrinizi anlatın, size özel bir kapsam ve fiyat teklifi çıkaralım.