== How to fix it in Android WebView === Code examples include::../../common/fix/code-rationale.adoc[] The certificate validation gets disabled by overriding the `onReceivedSslError` method of the `WebViewClient` class with an implementation that calls `SslErrorHandler.proceed()` unconditionally, and that never calls `SslErrorHandler.cancel()`. This means that a certificate initially rejected by the system will be accepted by the `WebViewClient`, regardless of its origin. ==== Noncompliant code example [source,kotlin,diff-id=101,diff-type=noncompliant] ---- class MyWebViewClient : WebViewClient() { override fun onReceivedSslError(view: WebView, handler: SslErrorHandler, error: SslError) = handler.proceed() // Noncompliant } ---- ==== Compliant solution You need to implement a validation of the server certificate received in the `SslErrorHandler` object, calling `proceed` and `cancel` appropriately. [source,kotlin,diff-id=101,diff-type=compliant] ---- class MyWebViewClient : WebViewClient() { override fun onReceivedSslError(view: WebView, handler: SslErrorHandler, error: SslError) { if (error.certificate.isServerCertificateValid()) { handler.proceed() } else { handler.cancel() } } private fun SslCertificate.isServerCertificateValid(): Boolean { // Implement the server certificate validation logic here ... } } ---- === How does this work? include::../../common/fix/validation.adoc[]