标签: android-security

处理Android Webview中的证书错误并清除证书参数

我正在尝试找到一种在Android Webview中处理SSL证书错误的正确方法.我的目标是提供一种加载具有SSL证书错误的页面的方法,但是当用户尝试加载带有证书错误的URL时,让用户选择在警告他安全性之后加载该页面.

我在线程中找到的最接近的解决方案建议覆盖WebViewClient,如下所示:

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedSslError(final WebView view, final SslErrorHandler handler, final SslError error) {
        handler.proceed();
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,这在没有用户同意的情况下基本上禁用了WebView中的SSL.

这里参考的是我找到解决方案的线程:

Android WebView SSL'安全警告'

Android上的Web View是否支持SSL?

Android WebView未加载HTTPS URL

带有客户端证书的android webview

在Android中使用WIFI时,Web视图在加载URL后显示空白/白页

无法在Android网页视图上加载特定网页

WebView显示某些链接的空白视图

Android WebView阻止从https重定向到http

忽略webview中的ssl证书请求

我继续实施了一个略有不同的版本,提示用户:

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedSslError(final WebView view, final SslErrorHandler handler, final SslError error) {
        //Showing a first confirmation dialog
        AndroidUtils.showYesNoDialog(
            //First confirmation message
            "WARNING - THIS PAGE IS NOT SECURE! Are you sure you want …
Run Code Online (Sandbox Code Playgroud)

ssl https android android-webview android-security

16
推荐指数
2
解决办法
1万
查看次数

您的应用程序包含不安全的加密模式(在动态加载的代码中)

当我发布了应用程序的小更新后,最近出现了发布前的报告。

在此输入图像描述

我最近在其他项目中也看到了一些类似的内容,类名以完全相同的名称进行了混淆(bjqm.*、bpce.*)。

我想知道是什么原因造成的(哪个部门)?请注意,它是动态加载的代码。这些类在“混淆映射.txt”中无处可见,我也没有在堆转储中捕获类。另外,我尝试在不混淆的情况下提交应用程序到内部构建中,但这些类在预发布报告中仍然被扰乱/混淆。

谷歌最近似乎更新了静态分析器,因为我在代码库中所做的微小更改不会导致它。

android google-play android-security

16
推荐指数
1
解决办法
2640
查看次数

获取Android库中源代码的校验和

我正在开发一个Android库,我想在我的代码中应用篡改检测机制,因为它调用了一些敏感的金融Web服务.

我要实现的是在运行时以编程方式计算apk(或其重要部分)的校验和,这样我就可以防止重新打包或重新编译的apk能够造成任何伤害(防篡改).

到目前为止,我想出的是计算校验和applicationInfo.publicSourceDir.但我不确定具有多个dex文件或多个splitApks的应用程序会发生什么.

以编程方式基于Android应用程序的代码库计算校验和的最可靠方法是什么?

java android dex android-library android-security

14
推荐指数
1
解决办法
950
查看次数

Android 10 android.security.keymaster.ExportResult.resultCode NullPointerException 崩溃

我的应用仅收到来自 Android 10 用户的单一崩溃报告。这是堆栈跟踪:

Fatal Exception: java.lang.NullPointerException: Attempt to read from field 'int android.security.keymaster.ExportResult.resultCode' on a null object reference

       at android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStorePublicKeyFromKeystore(AndroidKeyStoreProvider.java:256)
       at android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStoreKeyPairFromKeystore(AndroidKeyStoreProvider.java:296)
       at android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStorePrivateKeyFromKeystore(AndroidKeyStoreProvider.java:316)
       at android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStoreKeyFromKeystore(AndroidKeyStoreProvider.java:378)
       at android.security.keystore.AndroidKeyStoreSpi.engineGetKey(AndroidKeyStoreSpi.java:105)
       at java.security.KeyStore.getKey(KeyStore.java:1062)
       at we.lmk.iqQ(we.lmk:19)
       at we.Vmk.apply(we.Vmk:51)
       at io.reactivex.internal.operators.single.SingleMap$MapSingleObserver.onSuccess(SingleMap.java:57)
       at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:56)
       at io.reactivex.Single.subscribe(Single.java:3603)
       at io.reactivex.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:34)
       at io.reactivex.Single.subscribe(Single.java:3603)
       at io.reactivex.internal.operators.single.SingleZipArray.subscribeActual(SingleZipArray.java:63)
       at io.reactivex.Single.subscribe(Single.java:3603)
       at io.reactivex.internal.operators.maybe.MaybeFilterSingle.subscribeActual(MaybeFilterSingle.java:40)
       at io.reactivex.Maybe.subscribe(Maybe.java:4290)
       at io.reactivex.internal.operators.maybe.MaybeMap.subscribeActual(MaybeMap.java:40)
       at io.reactivex.Maybe.subscribe(Maybe.java:4290)
       at io.reactivex.internal.operators.maybe.MaybeMap.subscribeActual(MaybeMap.java:40)
       at io.reactivex.Maybe.subscribe(Maybe.java:4290)
       at io.reactivex.internal.operators.maybe.MaybeFlatMapSingle.subscribeActual(MaybeFlatMapSingle.java:47)
       at io.reactivex.Single.subscribe(Single.java:3603)
       at io.reactivex.internal.operators.single.SingleFlatMap.subscribeActual(SingleFlatMap.java:36)
       at io.reactivex.Single.subscribe(Single.java:3603)
       at io.reactivex.internal.operators.single.SingleFlatMap.subscribeActual(SingleFlatMap.java:36)
       at io.reactivex.Single.subscribe(Single.java:3603)
       at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
       at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
       at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
       at …
Run Code Online (Sandbox Code Playgroud)

java android keystore android-keystore android-security

14
推荐指数
1
解决办法
292
查看次数

设置应用程序如何启动应用程序的未导出活动?

Android N允许您将自己的活动链接到"设置"中的应用页面.只需添加一个<intent-filter>for android.intent.action.APPLICATION_PREFERENCES.Android N的"设置"应用会在您的应用中查找具有该活动的活动<intent-filter>.如果设置找到一个,它会在设置中的应用页面上添加一个齿轮图标,如果用户点击齿轮,它们将被带到您指定的活动.

我担心安全性,所以我提交了一个问题,寻找我们可以使用的权限android:permission,允许设置启动我们的活动,但不允许其他应用程序启动我们的活动(例如,WRITE_SECURE_SETTINGS).

然后cketti指出,您可以将活动标记为未导出,通过android:exported="false".令我惊讶的是,这很有效.

"设置"应用如何启动标记为未导出的活动?

我当然可以看到有一个权限可以控制它.但是,快速阅读"设置"应用程序的清单(主分支,n-developer-preview-5分支)并没有发现任何明显的问题.

所以:

  • 是否有允许应用启动其他应用的非导出组件的权限?如果是这样,这是什么?

  • 如果没有,设置如何将其关闭?

android android-source android-permissions android-security

13
推荐指数
1
解决办法
1070
查看次数

(GCP) API 密钥。您的应用包含公开的 Google Cloud Platform (GCP) API 密钥

在 Google Play 商店控制台中上传构建时出现错误。错误如下。

泄露的 GCP API 密钥 您的应用程序包含泄露的 Google Cloud Platform (GCP) API 密钥。

罪魁祸首代码如下。

Places.initialize(getApplicationContext(), BuildConfig.GOOGLE_API_KEY);
Run Code Online (Sandbox Code Playgroud)

根据文档,我正在从 BuildConfig 读取密钥并限制该密钥。但仍然是同样的问题。我该如何解决这个问题..

google-cloud-platform android-security google-play-console

13
推荐指数
1
解决办法
1万
查看次数

使用KeyPairGeneratorSpec的Android API级别<18?

我想将秘密数据存储在我的应用程序的私钥库中.

但是,当我正在编写代码来执行此操作时,Android Studio警告说KeyPairGeneratorSpec.Builder(context)需要API级别18,而我的目标是14.:-(

如何在Android API级别14到17的应用程序中存储秘密数据?

android android-keystore android-security

12
推荐指数
1
解决办法
2777
查看次数

您正在使用X509TrustManager的不安全实现

我在Google Play上有一个应用程序,今天我收到了Google的一封邮件说:

Google Play警告:您正在使用X509TrustManager的不安全实施

它说明了SSL证书问题以及解决问题的方法.

因为好奇,我问这个问题,

  1. 实际上这个警告到底是什么?
  2. 我没有在我的应用程序中使用任何与网络相关的活动(这是一个本地数据库驱动的应用程序),为什么我的应用程序出现了这个警告?

更多细节:

我的应用程序是使用Appcelerator Titanium构建的,google说这个实现是在ti.modules.titanium.network.NonValidatingTrustManager;.我确信我的代码中从未使用过这样的类.

android appcelerator android-security appcelerator-titanium trustmanager

12
推荐指数
2
解决办法
5280
查看次数

Google Play警告:WebViewClient.onReceivedSslError处理程序

我收到了来自Google的电子邮件,主题如下: Google Play Warning: SSL Error Handler Vulnerability". In this email, Google explains that my app has an ["unsafe implementation of the WebViewClient.onReceivedSslError handler"

这是我的方法实现(WebView Client):

 public class MyBrowser extends WebViewClient {
    boolean timeout;
    public MyBrowser() {
        timeout = true;
    }
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        try {

                progressBar.setVisibility(View.VISIBLE);                   

        }catch(Exception e){
            e.printStackTrace();
        }
    }
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

    public void onPageFinished(WebView view, String url) {

        try{

        progressBar.setVisibility(View.GONE); …
Run Code Online (Sandbox Code Playgroud)

android ssl-certificate android-security sslerrorhandler

12
推荐指数
1
解决办法
3179
查看次数

Android:删除OpenCV旧版本会解决Libpng漏洞警告吗?

我收到了来自Google Play商店的电子邮件 - "Google Play警告:您正在使用易受攻击的libpng版本".

电子邮件包含以下信息 - https://support.google.com/faqs/answer/7011127

我没有在我的应用程序中使用libpng库.但是,在我的Android应用程序中,我使用的是OpenCV2.4.5库.在互联网上搜索后,我发现OpenCV库使用了libpng.

我的问题 - 将OpenCV2.4.5升级到OpenCV3.1.0将解决"易受攻击的libpng版本"警告?

libpng android-security

11
推荐指数
2
解决办法
3655
查看次数