问题标签 [android-security]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android 安全 - 使用密码存储敏感信息的密码学
在我的应用程序中,我在共享首选项中保存了一些数据,这些数据在保存之前必须加密,并且在检索时必须解密。
我正在使用 AES-256 加密。为此,我正在使用密码/密码生成密钥。下面是我的代码片段。
根据我的应用程序,我可以要求用户提供一个独特的 pin。但我无法将密码保存在密钥库中,因为该应用程序必须从 4.0.0 开始支持。如何保存图钉?
android - 在 Android 应用程序中存储密钥的最佳位置是什么?
在应用程序代码中存储 API 密钥、数据库加密密钥等的最佳位置是什么,这样任何人都无法通过反编译代码来获取它?我使用 proguard 来混淆代码,但它不适用于字符串。
android - Google Play Worklight 6.2.0 上的 OpenSSL 警告
我在 Google Play 上发布了一个应用程序,我收到一封电子邮件,说我的应用程序在 Cordova 版本和 OpenSSL 版本方面存在问题。我为 WorkLight 6.0.2 下载并在我的应用程序上应用了一个修复程序,然后重新构建并重新部署到 Google 商店。Cordova 警告停止了,但 OpenSSL 仍然存在。
我对我的 .apk 文件做了一个 grep 并得到了这个结果:
unzip -p myApp.apk | strings | grep "OpenSSL"
和
阅读一些文章我猜想问题出在 OpenSSL 1.0.xxx 上,看到 grep 结果我有两个 OpenSSL 版本 1.0.1 和 1.1.0。我不知道我的应用程序是否有一些使用旧 OpenSSL 版本的第三方库。我在这个项目中使用 Xtify。也许这就是问题所在?
我知道堆栈溢出有关于这个 OpenSSL 问题的另一篇文章,但没有关于 worklight + xtify 上的这个问题的帖子。
谢谢!
ssl - 来自 google playstore 的警告“X509TrustManager Apache HTTP 客户端的不安全实现”
我已应用以下代码来验证服务器的 SSL 证书并使用 HTTPS 安全连接运行应用程序。我的服务器已经拥有由授权 CA 颁发的证书。
以下是我实现的代码片段..
PlayStore 收到警告
“您的应用在 Apache HTTP 客户端上使用了不安全的 X509TrustManager 接口实现,从而导致了安全漏洞。请参阅此 Google 帮助中心文章了解详细信息,包括修复漏洞的截止日期。”
以前,我也尝试过使用 TRUST MANAGER x509,但产生了同样的警告。任何人都可以帮我摆脱来自 Playstore 的警告吗?
android - 模拟安全警报的解决方案 - X509TrustManager 的不安全实现
所以,最近我在我的开发者控制台中收到以下警告,为了解决同样的问题,我已经完成了所需的修复。
正如谷歌所建议的,这里
要确认您所做的更改是否正确,请将应用的更新版本提交到开发者控制台,并在五小时后回来查看。如果应用程序未正确升级,我们将显示警告。
但是,如果我这样做,那么我的所有应用程序用户都会收到通知,如果问题没有完全解决,那么我将不得不做进一步的更改并将应用程序重新上传到 play-store。
我想知道,是否有任何其他模拟可以帮助我确保问题得到完全解决,然后只有我继续发布应用程序。
android - Safetynet API 帮助程序错误
我想实现安全网 API 来验证设备状态我发现的最简单的方法之一是安全网帮助器类,它使实现变得如此简单 github.com/scottyab/safetynethelper。我从 securitynetlib 复制了所有类并将它们添加到我的代码中。我按照植入的方法,但我得到一个错误代码
final SafetyNetHelper safetyNetHelper = new SafetyNetHelper(BuildConfig.API1);
04-20 22:32:50.950 28741-28741/com.aashish.smart D/SafetyNetHelper:apkDigest:IQUb5ULuwdbqOwpQn3jZev2EGXcjtk/yGYUvk1c64F8= 04-20 22:32:51.028 28741-28741/tyNetSafety.com连接的服务 04-20 22:32:51.028 28741-28741/com.aashish.smart V/SafetyNetHelper:运行 SafetyNet.API 测试 04-20 22:32:54.499 28741-28741/com.aashish.smart D/SafetyNetResponse: decodedJWTPayload json:{"nonce":"tnd1YpjORIX4teJEd7LuigDWNhWkF6s4T7Ay811BxsM=","timestampMs":1461171774655,"apkPackageName":"com.aashish.smart","apkDigestSha256":"IQUb5ULuwdbqOwpQn3jZev2EGXcjtk/yGYUvk1c64F8=","ctsProfileMatch":true,"extension" :"CQ6MIM+qMkMv","apkCertificateDigestSha256":["PHKalK4AF5EmDbPL5eBQS9EZJVPkgp06cr64rVQ7B7w="]} 04-20 22:32:54.500 28741-28741/com.aashish.smart E/SafetyNetHelper:无效的 apkCertificateDigest,本地/预期 =[MIIDizCCAnOgAwIBAgIEPIOxdDANBgkqhkiG9w0BAQsFADB2MQswCQYDVQQGEwJJTjETMBEGA1UECBMKVGFtaWwgTmFkdTEQMA4GA1UEBxMHQ2hlbm5haTEOMAwGA1UEChMFU21hcnQxEzARBgNVBAsTClRlY2hpbmljYWwxGzAZBgNVBAMTEkFhc2hpc2ggVml2ZWthbmFuZDAeFw0xNjA0MTkxMzM2MzdaFw00MTA0MTMxMzM2MzdaMHYxCzAJBgNVBAYTAklOMRMwEQYDVQQIEwpUYW1pbCBOYWR1MRAwDgYDVQQHEwdDaGVubmFpMQ4wDAYDVQQKEwVTbWFydDETMBEGA1UECxMKVGVjaGluaWNhbDEbMBkGA1UEAxMSQWFzaGlzaCBWaXZla2FuYW5kMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnbvJLdKZi8Nf96wNSVdJR/bh7Y0s6jv7AFQGcrR73rMTB/7EJyH9hbl4L5+U1mrfVodM+J3s/A7LD1gXnMwhsV46tV9ZijkVwT9guxXnUaWPSv2khh5tvpJ9Sj9kyUcOyelDz5iIhK5vP2ipx6ktETIeXv97iKKmHp3vJ7/gFAVsVtkIRQ+6hLo25AN+OPZE9qH8TsnCqIK+OSd+bF56/dMlhhE63Sy4ixEKZIC5b3RkUjJbuC67GS7hgq0EwoVwJ1lX99WgoLAYJq7hQm1FB3Ns+x1rkZ5+XYxt9ZCdUJbJQAFa15t9SumHDp3/yB2uaMtvju6xFTpkoaQo6cbaZwIDAQABoyEwHzAdBgNVHQ4EFgQUZnYr1WkTZPKm5/g783K/vDwrr8EwDQYJKoZIhvcNAQELBQADggEBAAx5ToAMW6nlkXwQ5S3oIeQ66TCzBJtLjHQ>IG6eWNkmNZYXuEj14nqWrSM+AniDcW3U/NwROXOERZfvtBiiwuy0Oc8GG31VmYAd6jgdkfsXfd+96wZxqH8PRtq3m1tjXYGb9Kg1CM1oDdN5H6xtqjU24nSpQEWWs6THuWHA1LEsAnnO0JM3lm0ltBOuIGJtWBd5S6tHMgi4U+m1z/oJAW0HAyWwbuwy7/YP1uEKlEEM669bUYG6iQ4dE3cIB5guZF2qMjwPKscW9bRjoviTgJUGmmVRdpd1Dk/OOZFUEK4A+ii5c7SLW2e//QoN3WV30zNHJArCvFfTGRbeZpwOl4Z4=] 04-20 22:32:54.500 28741-28741/com.aashish.smart E/SafetyNetHelper: invalid apkCertificateDigest, response = [PHKalK4AF5EmDbPL5eBQS9EZJVPkgp06cr64rVQ7B7w=] 04-20 22:32:54.657 28741-4205/com.aashish.smart E/AndroidDeviceVerifier:验证 JWS 消息时出现问题:IG6eWNkmNZYXuEj14nqWrSM+AniDcW3U/NwROXOERZfvtBiiwuy0Oc8GG31VmYAd6jgdkfsXfd+96wZxqH8PRtq3m1tjXYGb9Kg1CM1oDdN5H6xtqjU24nSpQEWWs6THuWHA1LEsAnnO0JM3lm0ltBOuIGJtWBd5S6tHMgi4U+m1z/oJAW0HAyWwbuwy7/YP1uEKlEEM669bUYG6iQ4dE3cIB5guZF2qMjwPKscW9bRjoviTgJUGmmVRdpd1Dk/OOZFUEK4A+ii5c7SLW2e//QoN3WV30zNHJArCvFfTGRbeZpwOl4Z4=] 04-20 22:32:54.500 28741-28741/com.aashish.smart E/SafetyNetHelper: invalid apkCertificateDigest, response = [PHKalK4AF5EmDbPL5eBQS9EZJVPkgp06cr64rVQ7B7w =] 04-20 22:32:54.657 28741-4205/com.aashish.smart E/AndroidDeviceVerifier:验证 JWS 消息时出现问题:IG6eWNkmNZYXuEj14nqWrSM+AniDcW3U/NwROXOERZfvtBiiwuy0Oc8GG31VmYAd6jgdkfsXfd+96wZxqH8PRtq3m1tjXYGb9Kg1CM1oDdN5H6xtqjU24nSpQEWWs6THuWHA1LEsAnnO0JM3lm0ltBOuIGJtWBd5S6tHMgi4U+m1z/oJAW0HAyWwbuwy7/YP1uEKlEEM669bUYG6iQ4dE3cIB5guZF2qMjwPKscW9bRjoviTgJUGmmVRdpd1Dk/OOZFUEK4A+ii5c7SLW2e//QoN3WV30zNHJArCvFfTGRbeZpwOl4Z4=] 04-20 22:32:54.500 28741-28741/com.aashish.smart E/SafetyNetHelper: invalid apkCertificateDigest, response = [PHKalK4AF5EmDbPL5eBQS9EZJVPkgp06cr64rVQ7B7w =] 04-20 22:32:54.657 28741-4205/com.aashish.smart E/AndroidDeviceVerifier:验证 JWS 消息时出现问题:响应 = [PHKalK4AF5EmDbPL5eBQS9EZJVPkgp06cr64rVQ7B7w=] 04-20 22:32:54.657 28741-4205/com.aashish.smart E/AndroidDeviceVerifier:验证 JWS 消息时出现问题:响应 = [PHKalK4AF5EmDbPL5eBQS9EZJVPkgp06cr64rVQ7B7w=] 04-20 22:32:54.657 28741-4205/com.aashish.smart E/AndroidDeviceVerifier:验证 JWS 消息时出现问题:https://www.googleapis.com/androidcheck/v1/attestations/verify?key=A.......................... .......0 java.io.FileNotFoundException: https://www.googleapis.com/androidcheck/v1/attestations/verify?key=A...... ......................0 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238) 在 com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210) 在 com.android.okhttp.internal .huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java) 在 com.aashish.smart.AndroidDeviceVerifier$AndroidDeviceVerifierTask.doInBackground(AndroidDeviceVerifier.java:113) 在 com.aashish.smart。AndroidDeviceVerifier$AndroidDeviceVerifierTask.doInBackground(AndroidDeviceVerifier.java:82) 在 android.os.AsyncTask$2.call(AsyncTask.java:295) 在 java.util.concurrent.FutureTask.run(FutureTask.java:237) 在 android.os。 AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:第588章)
完整日志:pastebin(dot)com/YXkS7NgW
有人可以帮我找出我无法找到的错误。或者是否有任何其他教程可供我使用安全网 API
android - Android:内容提供者安全
我正在学习一些Android的基础知识。现在,我正在处理ContentProvider
. 许多帖子说我们应该使用内容提供程序在应用程序之间进行数据共享。
经过几天的研究,我完全同意ContentProvider
在Android中使用它非常方便。但是,存在安全问题。
我们都知道内容提供者uri总是content://
在开头。通过这种方式,我可以使用一些工具(例如 Total Commander)来找出content://
特定文件中的单词并找出访问数据所需的一切。
接下来,我可以创建一个应用程序来访问另一个应用程序的数据uri
。
我是否错过了ContentProvider
用于防止此安全问题发生的某些内容?
添加1:
我们知道我们能够从.apk
文件转换为源。通过这种方式,黑客能够找出uri
用于访问数据的内容。
经过几个小时的研究,我知道我们可以设置权限(readPermission
和writePermission
),但黑客可以确切地知道它在哪里,他们可以将权限添加到他们的应用程序并继续访问我们应用程序的数据。
无论如何隐藏或只允许某些特定应用程序通过使用访问我们的数据ContentProvider
?
任何帮助,将不胜感激。先感谢您!
android - Android 指纹 - 不受 AndroidKeyStore 提供程序支持的加密原语
我正在尝试将 android Fingerprint 实现到示例应用程序中。使用的密码不被认为是有效的 - 但我不知道为什么,因为基于 android 文档,它应该被支持。
密码建立在:
这个密码在官方文档中列出。
后面用到的keyGenerator和keyFactory的生成方式如下。
我还使用该密码初始化密钥生成器:
我还将公钥添加到加密过程中,而公钥是这样生成的:
编辑:添加了私钥的一部分:
实际的指纹处理如下:
解密:
结果如下:
进程:com.example.android.fingerprintdialog,PID:16254 java.lang.IllegalArgumentException:加密原语不受 AndroidKeyStore 提供者支持:javax.crypto.Cipher@2419dda,spi:com.android.org.conscrypt.OpenSSLCipherRSA$PKCS1@4a4d20b
完整的堆栈跟踪: