Güvenli mobil geliştirme 2: platform, kod kalitesi, dayanıklılık ve gizlilik
MASVS tarzı gereksinimlerin kalan dört alanını uygularsın: bileşenleri ve WebView'ı güvenli kurmak, girdi ve bağımlılıkları yönetmek, kendi uygulamanı kurcalamaya karşı güçlendirmek ve gizliliği tasarıma katmak.
Seviye 301 · 23 ders · 21 pratik lab
Dersler
Platform etkileşimi
- Güvenli bileşen tasarımı: exported, izin ve imza koruması
- Derin bağlantıları doğrulamak
- WebView sıkılaştırma: JavaScript, köprüler ve dosya erişimi
- PendingIntent ve bildirimlerde veri sızıntısı
- Arayüz güvenliği: üst üste bindirme, ekran koruması, otomatik doldurma
- Kısa görev: köprü üzerinden yerel dosya okuyabilen WebView'ı sıkılaştır
Kod kalitesi
- Girdi doğrulama: SQL, dosya yolu ve intent enjeksiyonu
- Üçüncü taraf kütüphane ve SDK hijyeni
- Yerel kodda bellek güvenliği ve derleyici korumaları
- Güncellemeyi zorlamak ve eski sürümleri emekli etmek
- Kısa görev: provider'daki SQL enjeksiyonunu parametreli sorguyla kapat
Dayanıklılık
- Dayanıklılık ne işe yarar, ne işe yaramaz
- R8 ile karartma ve eşleme dosyasını korumak
- Bütünlük kontrolleri: imza doğrulama ve kurcalama tespiti
- Root, hata ayıklayıcı ve öykünücü tespiti: sınırları
- Sunucu tarafında uygulama bütünlüğü doğrulaması
- Kısa görev: sürüm derlemesinde hata ayıklama bayrağını ve ayrıntılı günlükleri kapat
Gizlilik
- Veri azaltma ve amaçla sınırlama
- Onay akışları ve izin gerekçesi
- Tanımlayıcılar: reklam kimliği, cihaz kimliği ve izleme
- Tasarımda gizlilik incelemesi
- Kısa görev: analitik SDK'sına giden gereksiz alanları kaldır
Bitirme
- Bitirme görevi: bir sağlık uygulamasını sekiz gereksinim alanına göre gözden geçir ve düzelt
Pratik lablar
- Dışa açık bileşeni koddan ve manifestten eşle: Bir projede dışa açık activity'nin hangi veriyi intent'ten okuduğunu bul.
- Derin bağlantı parametresini doğrula: Bağlantıdan gelen hesap numarasını doğrulamadan kullanan kodu izin verilen biçim denetimiyle düzelt ve test et.
- Bildirimden sızan veriyi ve PendingIntent'i düzelt: Kilit ekranında görünen hassas metni gizle, PendingIntent'i değiştirilemez yap ve iki düzeltmeyi testle doğrula.
- WebView ayarlarını listele: Projede WebView oluşturan sınıfı bul ve açık olan ayarları yaz.
- Dosya erişimi açık WebView'ı sıkılaştır: Dosya ve içerik erişimini kapat, yalnızca kendi alan adına izin ver ve yapılandırmayı Robolectric ile sına.
- JavaScript köprüsünü daralt: Köprüde açık yöntemleri en aza indir, yüklenen adresi izin listesiyle denetle ve yabancı adreste köprünün eklenmediğini test et.
- Hassas ekranda ekran görüntüsünü engelle: Bakiye ekranına güvenli pencere bayrağını ekle ve bayrağın ayarlandığını test et.
- Parola alanında otomatik düzeltme ve panoyu kapat: Giriş düzeninde klavye önbelleğine ve panoya sızıntıyı önleyen öznitelikleri ekle.
- Kaplama altında dokunmayı reddet: Onay düğmesine örtülü dokunma süzgecini ekle ve örtülü olayın yok sayıldığını birim testiyle göster.
- Birleştirilerek kurulan SQL sorgusunu bul: Sağlayıcı kodunda kullanıcı girdisiyle birleştirilen sorguyu bul.
- Sağlayıcıdaki SQL enjeksiyonunu kapat: Sorguyu parametreli hâle getir ve kötü niyetli seçim dizgisinin reddedildiğini test et.
- Dosya yolu geçişini kanonik yol denetimiyle kapat: Dosya adını doğrudan kullanan indirme kodunu kanonik yol denetimiyle düzelt ve üç kötü girdi için test yaz.
- Projede kullanılmayan SDK'yı bul: Bağımlılık listesinde kodda hiç çağrılmayan kütüphaneyi bul ve kaldır.
- Yerel kütüphanenin derleme korumalarını aç: CMake ayarlarına yığın koruması ve FORTIFY ekle, çıkan .so dosyasında doğrula.
- Eski sürümleri emekli eden denetimi yaz: Sunucudan gelen en düşük sürüm değerine göre güncellemeye zorlayan mantığı yaz ve sınır durumlarını test et.
- Yayın derlemesinde hata ayıklama bayrağını denetle: Yayın APK'sının manifestinde debuggable değerini doğrula.
- Yayında ayrıntılı günlükleri R8 ile çıkar: Günlük çağrılarını yayın derlemesinden çıkaran kuralı ekle ve çıkan dex içinde dizgilerin kalmadığını göster.
- Bütünlük kararını sunucuda doğrulayan akışı tasarla: İstemcide yapılan imza denetimini sunucu doğrulamasına taşıyan akışı yaz ve sahte kararın reddedildiğini test et.
- Analitik çağrısındaki gereksiz alanı bul: Analitik olayına eklenen e-posta adresini bul ve kaldır.
- Rızadan önce başlayan SDK'yı ertele: Uygulama açılışında başlatılan izleme SDK'sını rıza sonrasına taşı ve sırayı test et.
- Kalıcı cihaz kimliğini sıfırlanabilir kimlikle değiştir: Donanım kimliği kullanan kodu uygulamaya özel rastgele kimliğe geçir ve hesap silmede kimliğin yenilendiğini test et.
Kurs hakkında
MASVS tarzı gereksinimlerin kalan dört alanını uygularsın: bileşenleri ve WebView'ı güvenli kurmak, girdi ve bağımlılıkları yönetmek, kendi uygulamanı kurcalamaya karşı güçlendirmek ve gizliliği tasarıma katmak.
Ne öğreneceksin
- Platform etkileşimi
- Kod kalitesi
- Dayanıklılık
- Gizlilik
- Bitirme
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.