Google Play’in “güvenli olmayan SSL hata işleyicisi” uyarısını Instagram Unfollowers’ta nasıl çözdüğümü anlatıyorum.
Instagram Unfollowers’ın bir güncellemesinde Play Console’dan bir politika ihlali bildirimi aldım: uygulama, WebView’daki SSL hatalarını güvensiz bir şekilde ele alıyordu. Düzeltmek için belirli bir süre veriliyordu. Sorunun kaynağı tek bir satırdı.
Sorun neydi?
WebView bir sayfa yüklerken sertifikada sorun görürse (süresi dolmuş, alan adı uyuşmuyor, güvenilmeyen bir kök sertifika gibi) onReceivedSslError çağrılır. Birçok örnek kodda bu metot şöyle yazılır:
override fun onReceivedSslError(
view: WebView?,
handler: SslErrorHandler?,
error: SslError?
) {
handler?.proceed() // Hatayı yok say ve sayfayı yüklemeye devam et
}
Bu kod “sertifika ne olursa olsun devam et” demek. Aynı ağdaki bir saldırgan araya girip sahte sertifikayla trafiği okuyabilir. Kullanıcının girdiği şifre dahil. Google Play bu kalıbı otomatik tarayıp yakalıyor ve uyarı gönderiyor. Verilen süre içinde düzeltmezseniz sorunlu sürümle güncelleme gönderemiyorsunuz.
Çözüm
Varsayılan davranış hatada yüklemeyi iptal etmek olmalı:
override fun onReceivedSslError(
view: WebView?,
handler: SslErrorHandler?,
error: SslError?
) {
handler?.cancel()
// Kullanıcıya anlaşılır bir mesaj göster
hataGoster("Bağlantı güvenli değil. Lütfen ağınızı kontrol edip tekrar deneyin.")
}
Metodu hiç override etmemek de geçerli bir çözüm, çünkü WebView’ın varsayılan davranışı zaten iptal etmek. Ben kullanıcıya boş bir ekran yerine açıklama göstermek için override etmeyi tercih ettim.
Dikkat edilecekler
- Koşullu
proceed()da riskli. “Sadece geliştirme ortamında devam et” gibi bir kontrol eklediyseniz, bu kodun yayın sürümüne hiç girmediğinden emin olun. Play’in taraması kodun kendisine bakar, hangi dala girildiğine değil. - Bağımlılıkları da kontrol edin. Uyarının kaynağı bazen sizin kodunuz değil, eski bir reklam veya analiz kütüphanesidir. Play Console’daki uyarı detayında sınıf adı yazar; oradan hangi paketten geldiğini bulabilirsiniz.
- Test edin. badssl.com gibi test sitelerini WebView’da açıp uygulamanın gerçekten yüklemeyi durdurduğunu görün.
Düzeltilmiş sürüm incelemeden geçtikten sonra Play Console’daki uyarı kapanıyor. Bu hemen olmayabilir, o yüzden son güne bırakmamakta fayda var.