Mobil uygulama

İhtiyaca uygun ve güvenli bir mobil uygulama nasıl tasarlanır

Örnek proje: bir işletmenin ERP'sine bağlanan iOS ve Android uygulaması. Telefonun sisteme doğrudan bağlanmadığı, silmenin üç katmanda engellendiği ve her yazma işleminin açık onayla yapıldığı bir mimari.

· 5 dk okuma

Her mobil uygulama, işin kendisinden başlar: kim kullanacak, sahada ne yapacak, hangi veriye ne kadar dokunabilecek. Bu soruların cevabı ekranları da, güvenlik mimarisini de belirler. Telefon kaybolabilir, çalınabilir, yanlış bir dokunuşla bir kayıt gidebilir.

Bu yazıda örnek olarak, Odoo tabanlı ERP ortamlarına bağlanan bir iOS ve Android uygulamasını tasarlarken aldığım kararları ve her kararın arkasındaki nedeni anlatıyorum. Aynı yaklaşımı saha ekibi, müşteri ya da bayi uygulamalarında da kullanıyorum.

Uygulama ne yapıyor

Kullanıcılar, işletmenin ERP’sinde hesabı olan çalışanlar ve yöneticiler. Hesaplar uygulamada değil, ERP içinde işletmenin kendisi tarafından açılıyor; uygulamada kayıt ekranı yok.

Silme, arşivleme ve iptal ise telefondan hiçbir yoldan yapılamıyor.

Teknoloji

Katman Seçim
Uygulama Expo, React Native, TypeScript, expo-router, React Query
Cihazda güvenlik Şifreli güvenli depolama, biyometrik doğrulama (Face ID / parmak izi), ekran görüntüsü koruması
Ara katman (BFF) Node.js, TypeScript, Fastify; şema doğrulama, hız sınırı, güvenlik başlıkları
Ara katman verisi Ayrı bir PostgreSQL: oturumlar, bekleyen onaylar, kotalar, denetim kaydı
ERP bağlantısı Yalnızca Odoo’nun resmi JSON API’si
ERP tarafı Uygulamaya özel geliştirdiğim bir Odoo modülü

En önemli karar: telefon ERP’ye doğrudan bağlanmaz

Telefon ile ERP arasında her zaman bir ara katman (BFF, backend for frontend) var. Telefon ne ERP’ye ne de yapay zekâ sağlayıcısına doğrudan bağlanıyor. Nedeni üç maddede:

  1. Telefon doğrudan bağlansaydı yapay zekâ anahtarı uygulamanın içine gömülmek zorunda kalırdı ve uygulama paketinden çıkarılabilirdi.
  2. Kota ve hız sınırı yalnızca sunucuda güvenilir biçimde uygulanabilir.
  3. Silme yasağı yalnızca arayüzde kalırsa, uygulamayı atlayıp API’ye doğrudan istek atan biri bu yasağı aşabilirdi.

Giriş akışı

  1. Kullanıcı bir şirket kodu, ERP kullanıcı adı ve parolasıyla (varsa iki adımlı doğrulama koduyla) giriş yapıyor.
  2. Ara katman bu bilgileri ERP’de bir kez doğruluyor.
  3. ERP tarafındaki modül, yalnızca mobil kullanım için geçerli, süreli bir API anahtarı üretiyor.
  4. Parola hiçbir yerde saklanmıyor. Üretilen anahtar ara katmanın veritabanında AES-256-GCM ile şifreli duruyor.
  5. Telefona 15 dakikalık kısa ömürlü bir erişim anahtarı ve cihaza bağlı, 30 günlük bir yenileme anahtarı veriliyor; ikisi de cihazın güvenli deposunda tutuluyor.

Kullanıcı sunucu adresi yazmıyor, yalnızca şirket kodu giriyor. Adres girilebilseydi, kötü niyetli biri uygulamayı sahte bir sunucuya yönlendirebilir ya da ara katmanı iç ağdaki başka adreslere istek atmaya zorlayabilirdi (SSRF).

Silme yasağı: neden üç katman

Silme, birbirinden bağımsız üç yerde engelleniyor:

  1. Uygulamada: Silme düğmesi ya da ekranı yok.
  2. Ara katmanda: İzin listesinde silme, arşivleme ve toplu yazma işlemleri yok.
  3. ERP’de: Özel modül, istek mobil bağlamdan geliyorsa silme ve arşivleme işlemlerini çekirdek seviyede reddediyor.

Tek katman neden yetmiyor? Odoo’da yetkiler toplanır. Kullanıcıya “silme izni olmayan” bir grup eklemek, başka bir gruptan gelen silme iznini ortadan kaldırmaz. Üstelik ERP’nin API anahtarları, kullanıcının bütün yetkisini taşır ve model bazında daraltılamaz. Üç katman, ara katman ele geçirilse ya da bir anahtar çalınsa bile telefondan silmeyi imkânsız kılmak için var.

Yazma işlemleri: açık onay

Bir kaydı oluşturmak ya da güncellemek şu adımlardan geçiyor:

  1. Sistem yapılacak işlemi bir öneri olarak gösteriyor.
  2. Ara katman bu öneriyi özetiyle (hash) birlikte, 5 dakika geçerli ve tek kullanımlık bir bekleyen işlem olarak kaydediyor.
  3. Kullanıcı onay için ONAYLIYORUM yazıyor. Bu metin sohbet ekranına ya da yapay zekâya gitmiyor, ara katmana ayrı bir istekle ulaşıyor.
  4. Ara katman işlemi yeniden doğruluyor ve kullanıcının kendi yetkisiyle yürütüyor.
  5. İşlem denetim kaydına yazılıyor.

Bu yapı iki şeyi garanti ediyor: yapay zekâ bir kullanıcı adına kendiliğinden veri değiştiremiyor ve eski ya da değiştirilmiş bir öneri onaylanamıyor.

Hangi verilere dokunulabiliyor

Sunucu tarafında sertleştirme

Yapay zekâ ve kişisel veri

Asistan katmanı belirli bir sağlayıcıya bağlı olmayacak şekilde tasarlandı. Gösterge paneli ise yapay zekâ kullanmıyor; veriyi doğrudan ERP’den sorguluyor. Bu hem maliyeti hem gecikmeyi düşürüyor. Gerçek müşteri verisi, sözleşme ve KVKK süreçleri tamamlanmadan hiçbir yapay zekâ sağlayıcısına gönderilmiyor.

Test ve doğrulama

Durum

Uygulama şu anda kendi test ortamımda, dahili pilot aşamasında uçtan uca çalışıyor. Mağaza yayını, pilot kullanım ve hukuki metinlerin son onayı sonraki aşamalar. Uygulama yalnızca belirli işletmelere hizmet edeceği için Apple tarafında genel mağaza aramasında görünmeyen dağıtım yöntemini planladım.

Uygulamanın bağlandığı ERP’yi GearSoft yazısında, yayın öncesi kontrolleri de güvenlik yazısında bulabilirsiniz.