3

Play ストアの私のアプリの 1 つが最近このアラートを受け取りましたが、このアラートを停止するにはどうすればよいか完全にわかりません。これを参照してください。

私のアプリのシナリオ:

アプリには支払いゲートウェイが含まれていますが、支払いは Web ビューを介して行われます。このアラートは、これらの Web ビューの結果であるとほぼ確信しています。

Google からの洞察 :

私が検索した限り、私はOnReceivedSslErrorより頻繁に出くわし、アラートでさえ、そのメソッドを適切に処理するように明確に述べています。しかし、そもそもその方法を実装していないため、完全に迷っています。

サーフィンを深めると、これ、これ、これなどのリンクにたどり着きます。すべてのリンクで見つけた共通点は、それらがすべて古いバージョンの Android を参照していたことです。しかし、私はminSDKをAndroid 4.0以降の14として使用しています。それでまた迷子になった。そして、このアラートはhttps、webview で a を使用したときに発生すると思います。

だから私の質問は

  1. この問題が突然発生したのはなぜですか?

    このアプリは 6 か月以上 Play ストアにあり、このアラートは突然出てきます !!! 何が起こったのか全くわかりません!!

  2. 問題を再現するにはどうすればよいですか?

    この問題を再現するために多くの方法を試しましたが、ここに示すように SSL メソッドを実装しました。しかし、何も機能していないようです。

  3. この問題は支払いやアプリに何らかの影響を与えますか?

この問題を再現して詳細を確認するにはどうすればよいですか? また、このアラートを停止するにはどうすればよいですか?

何を試しましたか?:

古いAndroidバージョンに疑問を持っていたので、minSDKを使用してエミュレーターを設計しましたが、それでもフローがメソッドに入りませんでした。

私の疑問:

この問題を引き起こした可能性のある非正規の SSL が存在する可能性はありますか?

この問題に関するアイデアや洞察は非常に役立ちます。前もって感謝します。それと同じくらい簡単に、そのアラートを無効にするだけです。

4

2 に答える 2

0

WebViewClients を使用すると、Google がセキュリティ チェックをアップグレードしたようです。多くの場合、しゃれは意図していませんが、開発者は SSL の問題を次のように修正します。

        @Override
        public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
                    handler.proceed();
        }

私もこの問題を抱えていました.Lintはまだこのチェックを実装していないようです. そのため、再現するのは非常に困難です。何が起こるかを確認したい場合は、自己署名証明書を作成し、この証明書を使用して Web サーバーをセットアップし、webviewclient をこの「信頼できない」Web サーバーに接続します。onReceivedSSLError を処理しないと、エラーが発生するか、webview で何も起こりません (デフォルト)。お支払いに影響はありますか?URL / APIへのリクエストがキャンセルされるため、SSL証明書が信頼されていない場合はそうなると思います。

上記のスニペットは、SSL エラーを無視し、MITM 攻撃の可能性を提供します。リクエストを傍受し、ユーザーに警告し、ユーザーが続行するかどうかを選択できるようにしましたか?

例えば

        @Override
        public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
            //super.onReceivedSslError(view, handler, error);
            AlertDialog.Builder builder = new AlertDialog.Builder(GroupsActivity.this);
            builder.setTitle("Invalid/Untrusted certificate");
            builder.setMessage("You're accessing a page with an untrusted or invalid certificate. Do you want to continue?");
            builder.setNegativeButton("Cancel", new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    handler.cancel();
                    Toast.makeText(GroupsActivity.this, "Request cancelled", Toast.LENGTH_LONG).show();
                }
            });

            builder.setPositiveButton("Continue", new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    handler.proceed();
                }
            });
        }
于 2016-02-29T07:03:50.077 に答える