9

アプリが拒否された理由を理解し、修正しようとしています。SSL に関するものであることはわかっていますが、原因となっている依存関係を見つけることができないようです。次のセットアップを使用しています。

  1. アンドロイドN (24)
  2. ファブリック。
  3. ミックスパネル。
  4. クイックブロック。
  5. クラッシュリティクス
  6. 分析。

どんな助けでも大歓迎です。


更新:これはアラートセクションからのものです

セキュリティーアラート

アプリケーションに WebViewClient.onReceivedSslError ハンドラーの実装が安全ではありません。特に、この実装では SSL 証明書の検証エラーがすべて無視されるため、アプリは中間者攻撃に対して脆弱になります。攻撃者は、影響を受ける WebView のコンテンツを変更し、送信されたデータ (ログイン資格情報など) を読み取り、JavaScript を使用してアプリ内でコードを実行する可能性があります。SSL 証明書の検証を適切に処理するには、コードを変更して、サーバーによって提示された証明書が期待どおりである場合は常に SslErrorHandler.proceed() を呼び出し、それ以外の場合は SslErrorHandler.cancel() を呼び出します。影響を受けるアプリとクラスを含む電子メール アラートが開発者アカウント アドレスに送信されました。できるだけ早くこの脆弱性に対処し、アップグレードされた APK のバージョン番号を増やしてください。SSL エラー ハンドラの詳細については、開発者ヘルプ センターのドキュメントを参照してください。その他の技術的な質問については、に投稿できます。https://www.stackoverflow.com/questionsタグ「android-security」と「SslErrorHandler」を使用します。これを担当するサードパーティのライブラリを使用している場合は、サードパーティに通知し、協力して問題に対処してください。正しくアップグレードされたことを確認するには、更新されたバージョンを開発者コンソールにアップロードし、5 時間後にもう一度確認してください。アプリが正しくアップグレードされていない場合は、警告が表示されます。これらの特定の問題は、WebView SSL を使用するすべてのアプリに影響するわけではありませんが、すべてのセキュリティ パッチを最新の状態にしておくことをお勧めします。ユーザーを侵害のリスクにさらす脆弱性を持つアプリは、悪意のある動作に関するポリシーと開発者配布契約のセクション 4.4 に違反していると見なされる場合があります。公開されたすべてのアプリが、開発者配布契約および開発者プログラム ポリシーに準拠していることを確認してください。ご質問やご不明な点がございましたら、Google Play デベロッパー ヘルプ センターからサポート チームまでお問い合わせください。APK バージョン 2 に影響します。

4

2 に答える 2

2

以下で説明するように、webViewClient ハンドラーを更新する必要があります。アプリケーションで onReceivedSslError() で webview を使用していない場合は、SDK の最新バージョンを使用して、Google の新しいセキュリティ ポリシーに従って更新されたバージョンを取得しているかどうかを確認してください。

SSL 証明書の検証を適切に処理するには、コードを変更して、サーバーによって提示された証明書が期待どおりである場合は常に SslErrorHandler.proceed() を呼び出し、それ以外の場合は SslErrorHandler.cancel() を呼び出します。

たとえば、ユーザーに確認させるアラート ダイアログを追加すると、Google が警告を表示しなくなったようです。

    @Override
    public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    String message = "SSL Certificate error.";
        switch (error.getPrimaryError()) {
            case SslError.SSL_UNTRUSTED:
                message = "The certificate authority is not trusted.";
                break;
            case SslError.SSL_EXPIRED:
                message = "The certificate has expired.";
                break;
            case SslError.SSL_IDMISMATCH:
                message = "The certificate Hostname mismatch.";
                break;
            case SslError.SSL_NOTYETVALID:
                message = "The certificate is not yet valid.";
                break;
        }
        message += " Do you want to continue anyway?";

        builder.setTitle("SSL Certificate Error");
        builder.setMessage(message);
    builder.setPositiveButton("continue", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            handler.proceed();
        }
    });
    builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            handler.cancel();
        }
    });
    final AlertDialog dialog = builder.create();
    dialog.show();
}

この変更後、警告は表示されません。

于 2016-07-15T06:29:23.293 に答える