问题标签 [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.

0 投票
1 回答
139 浏览

java - 从另一个 Android 应用程序访问公共对象

鉴于后一个应用程序具有第一个应用程序的源代码,公共类或其任何公共(静态)方法/公共变量是否有可能被另一个应用程序访问/调用?

或者至少,也许在有根设备上,是否可以从内存中确定它们的值?

0 投票
3 回答
1446 浏览

android - 我可以将 android 的 release.keystore 文件存储在 assets 文件夹中吗?

在 android 开发者页面 ( http://developer.android.com/tools/publishing/app-signing.html#secure-key ) 中,它声明:

将包含您的私钥的密钥库文件保存在安全的地方。

这是否意味着我们应该将 release.keystore 文件保存在本地计算机上的某个位置(而不是应用程序内部)?

或者我可以将它保存在src/main/assets文件夹中,因为密钥库受密码保护?但另一方面,keyPasswordstorePassword存储在 build.gradle 文件中,因此将 release.keystore 文件存储在其中src/main/assets不是一个好主意?最安全的方法是什么?

0 投票
4 回答
1516 浏览

android - 在 Android 设备上安全地隐藏字符串

问题: 我需要在设备本地存储一个秘密密钥(字符串)。我该如何合理地做到这一点?

保持本地存储的 100% 安全私密的东西是不可能的,但我想让某人尽可能难以提取密钥。我有哪些选择?

要求

  • 不应该涉及 UI 操作。
  • 密钥不应该以微不足道的方式提取。

可能的解决方案

0 投票
0 回答
869 浏览

android - 如何跨应用程序共享存储在 Android 密钥库系统中的密钥?

我有一个被许多商家应用程序使用的 SDK。由于所有这些应用程序都使用我的 SDK,我想将存储在由一个应用程序生成的 android 密钥库系统中的密钥公开给该设备上的所有应用程序。这在当前的 Android 密钥库系统中是否可行?是否有可能使其世界可读,类似于共享偏好?如果此功能不可用,那么有什么好的方法可以做到这一点,因为商家不会让他们的 APP 被用作身份验证器的方式。

我检查了以下链接以获取可能的解决方案。通过这些链接后,我了解到应用程序可以访问密钥生成它,并且应用程序可以通过反射访问它。

  1. 关联
  2. 关联
  3. 关联
  4. 关联
  5. 关联
0 投票
2 回答
14609 浏览

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

我最近收到了一封来自 Google 的电子邮件,主题如下:“Google Play 警告:SSL 错误处理程序漏洞”。在这封电子邮件中,Google 解释说我的应用程序有一个 ["不安全的 WebViewClient 实现。onReceivedSslError处理程序。具体来说,该实现忽略所有 SSL 证书验证错误,使您的应用程序容易受到中间人攻击。攻击者可以更改受影响的 WebView 的内容,读取传输的数据(例如登录凭据),并使用 JavaScript 在应用程序内部执行代码。"] ...................

我在我的代码中使用:

// 我的代码

为什么 Google Play 会发送有关 SSL 的警告?这是我的代码问题还是 PayUMoney 问题?

0 投票
3 回答
15184 浏览

android - 处理 Android Webview 中的证书错误并清除证书首选项

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

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

但是,这基本上会在未经用户同意的情况下禁用 WebView 中的 SSL。

以下是我找到该解决方案的线程供参考:

Android WebView SSL“安全警告”

Android 上的 Web 视图是否支持 SSL?

Android WebView 未加载 HTTPS URL

带有客户端证书的android webview

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

无法在 Android webview 上加载特定网页

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

Android WebView 阻止从 https 重定向到 http

忽略 webview 中的 ssl 证书请求

我继续实施了一个稍微不同的版本,它会提示用户:

该实现询问用户两次是否要加载页面,如果他两次回答是,则忽略错误并加载页面,否则取消页面加载。

第一次加载带有证书错误的 URL 时,WebViewClient.onReceivedSslError会被调用,但是如果用户继续遇到证书错误并被SslErrorHandler.proceed()调用,则以下次数相同的 URL 将WebViewClient.onReceivedSslError永远不会被再次调用:仅终止应用程序会重置此行为。

我希望WebViewClient.onReceivedSslError在加载带有证书错误的 URL 时被系统地调用,而不仅仅是第一次。我尝试调用这些方法但没有成功:

有人知道如何在调用WebViewClient.onReceivedSslError同一个 URL 后SslErrorHandler.proceed()多次调用 WebView 吗?

0 投票
2 回答
1513 浏览

java - 使用 DevicePolicyManager 在 android 上隐藏应用程序

我正在尝试使用 DevicePolicyManager 从我的应用程序中隐藏我设备上的 Facebook。现在,我已经设法通过调用 setCameraDisabled 方法来禁用相机。

现在我试图隐藏 Facebook,所以我调用了 setApplicationHidden 方法并将 Facebook 的 bundleId 指定为参数之一。当我运行我的代码时,我得到一个 java 安全异常,说我的管理员不拥有该配置文件。

如何获得用户权限,以便停止此安全异常?有没有更好的方法来以编程方式限制 3rd 方应用程序?

谢谢

0 投票
1 回答
862 浏览

android - 控制第三方 API 对 Android 系统资源的访问?

当您在 Android 项目中导入第三方 API(数据包依赖注入、生成的库、源代码等)时,您会假设它们的行为与宣传的一样。大多数时候代码不是开源的,它被混淆或只是编译。

有没有办法控制这些 API 对网络、联系人、视频和音频、位置等重要系统资源的访问?

最好的方法是为proxy他们提供系统资源。这将有以下好处:

  • 可以通过在代理中提供模拟数据来执行测试
  • 如果不需要,您的应用程序不必提供 API 所需的所有权限,并且代理将通过模拟授予的权限允许 API 不会因为权限而中断
  • 过滤在本地收集的关于用户的可能数据并发送到 API 主存储库,用于广告或恶意意图

由于用户定义的活动和服务无法控制第三方 API 的服务,甚至无法阻止它们直接调用任何 Android 公共接口,因此我无法找到如何实现这样的解决方案。

该解决方案不需要 root 访问权限,因为您不希望在您自己的应用程序边界之外拥有此控件。

这个问题的内容与几个问题相关联,这些问题解决了这个广泛问题的特殊性(内容提供者的日志数据网络请求——这让我在研究这个问题的答案时想到了这个问题)

注意:简短的回答是否定的,但一个人可以有足够的创造力(也许去本地级别的黑客可能会解决这个问题 - idk)

0 投票
1 回答
467 浏览

android - Android 应用程序中的安全警报

对于我的一个应用程序,我在 android 开发人员控制台中收到了安全警报。我不使用http请求。我不确定像 Admob 和 Facebook 这样的广告网络使用它。

为此需要任何特定的代码/ gradle 设置吗?

如何解决这个问题并摆脱安全警报?

在此处输入图像描述

0 投票
4 回答
12479 浏览

android - Google Play security alert for insecure TrustManager

In one of my apps I'm using HTTPS with a self-signed certificate and followed the sample code from the android developer training site (https://developer.android.com/training/articles/security-ssl.html#UnknownCa).

I recently got the following alert saying that the current implementation is not secured:

Security alert

Your app is using an unsafe implementation of the X509TrustManager interface with an Apache HTTP client, resulting in a security vulnerability. Please see this Google Help Center article for details, including the deadline for fixing the vulnerability.

Can someone provide more details on what should be updated beyond the sample code linked above?

Should I implement a custom TrustManager? If so, what should it verify?