问题标签 [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 - Apache Cordova 安全漏洞
我最近向 Google Play 上传了一个 android 应用程序,并且我收到了众所周知的安全漏洞警告Apache Cordova 安全漏洞。我有点困惑,因为我使用的是 Cordova CLI 6.0.0 和 Cordova Android 5.1.1。我做错了什么?
项目信息:
我尝试在 config.xml 中添加/删除下一行
我也尝试在 index.html 中添加和删除下一行
这是我从 Google Play 团队收到的电子邮件:
您好 Google Play 开发者,
我们拒绝了 XXXXXX,包裹 ID XXXXXXX,因为它违反了我们的恶意行为政策。如果您提交了更新,您的应用的旧版本仍可在 Google Play 上使用。
此应用程序使用包含用户安全漏洞的软件。
以下是在您最近提交的文件中检测到的漏洞列表和相应的 APK 版本。请尽快升级您的应用并增加升级后 APK 的版本号。
漏洞 APK 版本 Apache Cordova 漏洞已在 Apache Cordova v.3.5.1 中修复。
您可以在这篇Google 帮助中心文章中找到更多信息和后续步骤。
proguard - 如何在我的源代码中从混淆的 ProGuard 类名中找到真正的类名?
我从 Google 收到一封关于TrustManager 实施不安全的电子邮件 ,唯一的线索是有问题的代码在 com.baaf 类中。显然,这是混淆的名称。我如何在我自己的源代码中从那个混淆的类名中获得真正的类名。有没有办法查找 ProGuard 所做的映射?谢谢!
android - 如果应用被反编译,GoogleAuthUtils.getToken() 的安全性如何
我目前正在为 Android 构建一个从我的后端服务器请求数据的应用程序。当然,我想知道在我的服务器上收到的请求是否真的来自我的应用程序,或者是否有人只是从另一台服务器发送 HTTP 请求等。我阅读了Tim Bray关于该主题的文章,但想知道这种方法的安全性如何. 这篇文章提到有根设备可能会危及安全性,但我正在考虑以下情况:
- 恶意人员获取我的应用程序,对其进行完全反编译并检测到我使用
GoogleAuthUtils
- 她/他更改我的应用程序以破解它并将其部署到她/他的设备上(使用相同的包名称等)
我知道假应用程序的签名会有所不同(因为恶意者没有我的私钥)并且无法从 Play 商店下载(因为无法在其中发布具有相同包名的两个应用程序)。
GoogleAuthUtils.getToken()
如果设备没有植根:这个假应用程序是否与我的真实应用程序获得相同(或任何)结果?
黑客可以对 root 设备上的响应应用哪些可能的更改(我还可以问:响应的哪些字段由 Google 签名,以便我可以检测它们是否未被篡改)?
android - Webview 在执行 onReceivedSslError 时避免来自 google play 的安全警报
我有一个将在 webview 中打开的链接。问题是它无法打开,直到我像这样覆盖 onReceivedSslError:
我收到来自 google play 的安全警报:
安全警报 您的应用程序的 WebViewClient.onReceivedSslError 处理程序的实现不安全。具体来说,该实现会忽略所有 SSL 证书验证错误,从而使您的应用容易受到中间人攻击。攻击者可以更改受影响的 WebView 的内容,读取传输的数据(例如登录凭据),并使用 JavaScript 在应用程序内执行代码。
要正确处理 SSL 证书验证,请更改您的代码以在服务器提供的证书符合您的期望时调用 SslErrorHandler.proceed(),否则调用 SslErrorHandler.cancel()。包含受影响应用程序和类的电子邮件警报已发送到您的开发者帐户地址。
请尽快解决此漏洞,并增加升级后的APK版本号。有关 SSL 错误处理程序的更多信息,请参阅开发者帮助中心中的文档。对于其他技术问题,您可以发布到https://www.stackoverflow.com/questions并使用标签“android-security”和“SslErrorHandler”。如果您使用的是负责此问题的第 3 方库,请通知第 3 方并与他们一起解决问题。
要确认您已正确升级,请将更新后的版本上传到开发者控制台,并在五小时后回来查看。如果应用程序未正确升级,我们将显示警告。
请注意,虽然这些特定问题可能不会影响使用 WebView SSL 的每个应用程序,但最好及时更新所有安全补丁。存在使用户面临泄露风险的漏洞的应用程序可能会被视为违反内容政策和开发者分发协议第 4.4 节的危险产品。
请确保所有发布的应用都符合开发者分发协议和内容政策。如果您有任何问题或疑虑,请通过 Google Play 开发者帮助中心联系我们的支持团队。
如果我删除onReceivedSslError (handler.proceed())
,则页面将无法打开。
无论如何我可以在 webview 中打开页面并避免安全警报。
android - 无论如何要在 android 上隐藏/混淆 .realm 文件?
我打算使用领域存储散列密码和 PIN。我一直在研究加盐,建议为每个密码/PIN 设置不同的盐。还建议盐应该在数据库中的某个地方。
我的问题是 .realm 文件安全吗?有没有办法保证 .realm 文件的内容无法打开?
android - 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)的实现:
在第一次警告之后,我从 WebClient 中删除了 onReceivedSslError 方法并上传了新版本,但我再次从 Google Play 收到了相同的警告。他们建议我:-“看起来版本 18 仍然存在漏洞。请重新检查您的应用程序的清单文件,这次更仔细,以确保漏洞已得到解决。”
这是我的清单文件:-(请帮助我摆脱这个问题)
android - 如何在android中的两个或多个应用程序之间安全地共享数据?
我正在为企业环境制作一个应用程序框架,其中涉及设备内存中两个或多个应用程序之间的数据共享。这些数据需要存储在设备上,并且只有少数应用程序可以访问(可以通过用于安装它们的证书来识别)。此外,它需要以安全的方式存储,以免其他第三方应用程序访问。哪个是实现此功能的最佳方式?
我已经阅读了有关ContentProviders和ContentResolvers的内容,据我了解,它们只会促进这个过程。数据的实际存储更重要。我还研究了 Android 的Keychain API,这似乎最接近我需要实现的目标。
有没有办法将ContentProviders和ContentResolvers与 Keychain API 集成?这是正确的方法吗?如果不是,达到相同效果的最佳方法是什么?此外,我还没有找到好的代码示例来完全理解Keychain API的功能。请帮忙!
编辑:
我也看过Keystore API。这在内部使用 Keychain API,并且为了在应用程序之间共享数据,应该使用 Keychain。虽然我无法找到相同的代码示例,也找不到有关如何使用 Keychain API 的详细文档或 API 指南。我正在寻找与iOS Keychain等效的 android 。
Android 5 中还引入了称为托管配置文件的东西。这是实现我想要做的事情的正确方法吗?
android-security - 如何确认 X509TrustManager Google Play 警告问题的正确更改?
我收到警告消息“Google Play 警告:您正在使用 X509TrustManager 的不安全实现”。我删除了有问题的代码并更新了 APK,但警告仍然存在。这可能是因为其中一个库。是否有任何更改可以在不发布 APK 的情况下确认正确更改?
android - 如何修复包含不安全的 TrustManager 实现的应用程序
我正在尝试使我的 Android 应用程序符合 Android 的新政策,即按照此要求和说明拥有安全应用程序。
1) 我首先将 SSL 和 https 添加到我的应用程序中的 url 2) 然后我开始使用类 HttpsURLConnection 而不是 HttpURLConnection
这是我使用的远程调用示例:
但它并没有删除我的开发者控制台上的警告标志。知道我做错了什么以及如何解决这个问题吗?
android - 使用 KeyStore 跨 2 个 android 应用程序编码/解码数据
我有 2 个应用程序,它们使用相同的密钥库签名。
我不想在这些应用程序之间共享敏感数据。
例如,我在应用程序 A 中加密了一个字符串。将结果放入Context.MODE_WORLD_READABLE)
SharedPreferences
应用程序 B 中并读取该数据并对其进行解密。
这是一个合理的场景吗?还是我应该以其他方式解决这个问题?
我可以在应用程序 A 中创建 key pars,但是如果我正确理解 KeyStore,那么应用程序 B 将对此一无所知?