OWASP kategorisi: MASVS-CODE: Kod Kalitesi
Genel Bakış
WebView, Android uygulamalarında web içeriğinin uygulama içinde gösterilmesini kolaylaştıran yerleşik bir tarayıcı bileşenidir. Uygulamanın kullanıcı arayüzünde HTML, CSS ve JavaScript'i oluşturur.
Uygulamalar Arası Komut Dosyası Çalıştırma, kötü amaçlı kodun yürütülmesiyle genel olarak ilişkilidir bir uygulamadır. Bu dokümanlar kapsamında, konu özellikle güvenlik açığı olan bir WebView'e kötü amaçlı JavaScript kodu eklemeyle sınırlı olacaktır.
Bir uygulama, yeterli olmaksızın WebView'a kötü amaçlı JavaScript'i kabul ettiğinde temizleme veya temizleme gibi işlemler yapması durumunda uygulama, uygulamalar arası güvenlik açığına karşı savunmasızdır. Komut dosyası çalıştırma.
Etki
Saldırgan tarafından kontrol edilen JavaScript içeriği, doğrulanmadan veya temizlenmeden savunmasız uygulamanın Web Görünümü'ne aktarıldığında uygulamalar arası komut dosyası güvenlik açıklarından yararlanılabilir. Bu nedenle, saldırgan, kurban uygulamasının WebView bağlamında yürütülür. İlgili içeriği oluşturmak için kullanılan Kötü amaçlı JavaScript kodu, kurbanın uygulama ile aynı izinleri kullanabilir. hassas kullanıcı verilerinin çalınmasına ve hesabın ele geçirilmesine yol açabilir.
Çözümler
JavaScript'i devre dışı bırak
Uygulamanız JavaScript gerektirmiyorsa, devre dışı bırakmak JavaScript aşağıdaki durumlarda tehdit oluşturabilirsiniz:
Kotlin
// Get the WebView Object
val webView = findViewById<WebView>(R.id.webView)
val webSettings = webView.settings
// Disable JavaScript
webSettings.javaScriptEnabled = false
Java
// Get the WebView Object
WebView webView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
// Disable JavaScript for the WebView
webSettings.setJavaScriptEnabled(false);
Uygulamanız JavaScript gerektiriyorsa, herhangi bir sitenin sahibi veya yöneticisi olduğunuzdan emin olun. JavaScript, WebView'a geçirildi. WebView'in keyfi JavaScript çalıştırmasına izin vermeyin. Sonraki bölümdeki talimatları inceleyin.
Web Görünümü'ne yalnızca beklenen içeriğin yüklendiğinden emin olun
shouldOverrideUrlLoading()
, loadUrl()
veya evaluateJavascript()
,
gibi yöntemler kullanırken, kendilerine iletilen URL'lerin kontrol edildiğinden emin olun. Daha önce de belirtildiği gibi, Web Görünümü'ne iletilen tüm JavaScript'ler yalnızca beklenen alanlardan gelmelidir. Bu nedenle, nelerin yüklendiğini doğrulamak önemlidir.
İyi tavsiyeler ve örnekler için OWASP'ın giriş doğrulama dokümanlarını ve WebView'ler için bu Android güvenlik kontrol listesini inceleyin.
WebView için güvenli dosya erişimi ayarlarını belirleme
Dosyalara erişilemediğinden emin olmak, WebView'larda rastgele JavaScript'in çalıştırılmasını önleyebilir. Dosya erişiminin güvenliğini sağlarken aşağıdaki WebSettings
dikkate alınmalıdır:
- Dosya erişimini devre dışı bırakın. Varsayılan olarak
setAllowFileAccess
şuradaTrue
olarak ayarlanmıştır: Yerel dosyalara erişim izni veren API düzeyi 29 ve daha düşük sürümler. API düzeyi 30'da ve daha yüksek değer varsayılan değerFalse
olur. Dosya erişimine izin verilmediğinden emin olmak içinsetAllowFileAccess
değeriniFalse
olarak açıkça ayarlayın İçerik erişimini devre dışı bırakın.
setAllowContentAccess
için varsayılan ayarTrue
'dır. İçerik URL'si erişimi, WebView'in sisteme yüklenmiş bir içerik sağlayıcıdan içerik yüklemesine olanak tanır. Uygulamanız içerik erişimi gerektirmiyorsa uygulamalar arası komut dosyası saldırısı durumunda olası kötüye kullanımları önlemek içinsetAllowContentAccess
değeriniFalse
olarak ayarlayın.Kotlin
kotlin webView.settings.javaScriptEnabled = false webView.settings.domStorageEnabled = true webView.settings.allowFileAccess = false webView.settings.allowContentAccess = false
.Java
java webView.getSettings().setJavaScriptEnabled(false); webView.getSettings().setDomStorageEnabled(true); webView.getSettings().setAllowFileAccess(false); webView.getSettings().setAllowContentAccess(false);
.
Güvenli Tarama'yı etkinleştirme
İletilen URL'leri taramak için AndroidManifest.xml
'te Güvenli Tarama'yı etkinleştirin
Kimlik avı veya kötü amaçlı alanlar için WebView:
<meta-data android:name="android.webkit.WebView.EnableSafeBrowsing"
android:value="true" />
Kaynaklar
- Güvenli Tarama dokümanları
- WebView geliştirici referansı
- Web Görünümü geliştirici referansı için Web Ayarları
- setAllowFileAccess geliştirici dokümanları
- setAllowContentAccess geliştirici referansı