3

私は 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があります.ピンにすべての「ランダム」および「間違った」値を設定でき、正常に動作するため、チェックされないようです(MY_DOMAIN.com動作をブロックせずにURLが正常にロードされます) .

つまり、中間者がアプリケーションに記述しres>xml>network_security_config.xmlたピンとは異なる 1 つのピンを返した場合でも、安全な動作をせずに正常に動作し続けることを意味します。また、オーバーライドされた のエラー メソッドの 1 つも実行しませんWebViewClient

私のエラーを理解できないのを助けてください。

4

1 に答える 1