Я занимаюсь разработкой на Android 8 (26 API, Oreo) и использую android.webkit.WebView
в своем приложении.
Я бы реализовал «безопасное сетевое соединение», когда загружаю страницы с помощью WebView
(иными словами, я бы избежал проблем с посредником и самозаверяющих сертификатов)
Для этого я использовал конфигурацию безопасности сети (на Android с версии 7.0 N, 24 API)
Итак:
В res>xml>network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config>
<domain includeSubdomains="true">MY_DOMAIN.com</domain>
<pin-set>
<pin digest="SHA-256">MY_PIN</pin>
</pin-set>
</domain-config>
</network-security-config>
Я нашел MY_PIN
вставив MY_DOMAIN.com
здесь: https://report -uri.com / home / pkp_hash
В manifest>AndoridManifest.xml
...
<application
android:networkSecurityConfig="@xml/network_security_config"
...
</application>
В onCreate моего приложения я просто делаю:
WebView webView = new WebView(this);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(..)..
@Override
public void onPageFinished()..
...});
webView.loadUrl(MY_DOMAIN.com);
В соответствии с документами для Android я делаю это правильно, но яесть проблема: это как network_security_config.xml
никогда не проверяется, потому что я могу установить каждое «случайное» и «неправильное» значение для пина, и он работает нормально (URL MY_DOMAIN.com
загружается нормально, без блокировки).
Так что это означает, что если какой-то человек посередине вернет обратно один другой вывод из тех, что я написал в res>xml>network_security_config.xml
, приложение продолжит работать нормально и без безопасного поведения.Он также не выполняет один из переопределенных методов ошибки WebViewClient
.
Пожалуйста, помогите, я не могу понять мою ошибку.