标签: android-security

IP地址范围的网络安全配置?

在 Android P 中,默认情况下禁用明文通信。相反,有两种选择:

  • 需要在清单文件中明确声明允许明文通信
  • 或者需要声明允许通过网络安全配置进行明文通信的域。

我的问题与第二种方法有关。我可以在 network_security_config.xml 中将这样的特定 IP 地址列入白名单

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">192.168.1.1</domain>
    </domain-config>
</network-security-config>
Run Code Online (Sandbox Code Playgroud)

但是,我想将所有私有 IP 地址列入白名单。我有一些反复试验的案例,但我无法让它发挥作用。

本质上,是否提供了在网络安全配置中定义IP 地址范围的选项?

android android-security android-9.0-pie

9
推荐指数
1
解决办法
5074
查看次数

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

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

有没有办法控制此API对重要系统资源(如网络,联系人,视频和音频,位置)的访问?

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

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

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

该解决方案不应要求root访问权限,因为您不希望将此控件置于您自己的应用程序的边界之外.

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

注意:简短的答案是否定的,但是一个人可以有足够的创造性(可能会针对本机级别的黑客可能会解决此问题 - idk)

api proxy android android-security

8
推荐指数
1
解决办法
556
查看次数

我的Google Play控制台中有关libpng的安全警报

我在谷歌播放控制台收到一个关于2个应用程序(由buildbox制作的游戏)的安全警报,警报说我的应用程序使用了一个版本的libpng,这提出了一个安全漏洞,我在我的项目中找不到这个lib,任何解决方案请 ?他们也给了我这个链接https://support.google.com/faqs/answer/7011127

android libpng android-security

8
推荐指数
1
解决办法
2060
查看次数

使用Google + Facebook登录的Android应用程序的Spring启动REST api安全性

我正在构建一个2层的应用程序: -

1.原生Android应用程序 - 包含通过Facebook + Google登录以减少痛苦登记的能力.

2.使用Spring Boot的Java Server - 典型的MVC端点,例如REST api + UI管理屏幕.

Facebook(FacebookSdk)和Google(GoogleApiClient)登录部分正在使用以下Android依赖项进行工作和测试: -

dependencies {
   compile 'com.facebook.android:facebook-android-sdk:4.6.0'
   compile 'com.google.android.gms:play-services-auth:9.0.0'
   ....

}
Run Code Online (Sandbox Code Playgroud)

API我们有: -

/api/signin- 当用户使用Facebook + Google成功登录并在users数据库表中创建条目时调用.

还有许多其他API端点,例如优惠

/api/offers/<user_id>- 向已注册的用户返回优惠.

我不确定最佳实践方式: -

  1. android应用程序如何对/ api/signin REST端点进行API调用(即哪些标头等可以发送到我认为是没有安全性的端点,因为未注册的用户将会遇到此问题).另外,在usersdb表中可以保存哪些字段?

  2. Android应用程序如何调用例如/ api/offers /已经注册的用户?即当Android应用程序传递时令牌等等?

  3. Spring安全性保护这些端点的最佳实践方法.

假设OAuth 2是要走的路,但任何建议/指针都将受到最多的赞赏.

android spring-security android-facebook spring-boot android-security

8
推荐指数
1
解决办法
1692
查看次数

java.security.cert.CertPathValidatorException:未找到证书路径的信任锚。在 api 上少于 24

com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
Run Code Online (Sandbox Code Playgroud)

我在 19 到 24 的 api 上的 logcat 中收到此错误,并且我的应用程序中没有从服务器加载数据我搜索了该错误并找到了解决方案

 @SuppressLint("TrulyRandom")
public static void handleSSLHandshake() {
    try {
        TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
            public X509Certificate[] getAcceptedIssuers() {
                return new X509Certificate[0];
            }

            @Override
            public void checkClientTrusted(X509Certificate[] certs, String authType) {
            }

            @Override
            public void checkServerTrusted(X509Certificate[] certs, String authType) {
            }
        }};

        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
            @Override
            public boolean verify(String arg0, SSLSession …
Run Code Online (Sandbox Code Playgroud)

android android-volley android-security trustmanager x509trustmanager

8
推荐指数
0
解决办法
3240
查看次数

android信任管理器漏洞

我收到了一封来自谷歌的非常令人不安的电子邮件:

我们对app name、 和进行了审核,package name发现您的应用程序使用的软件包含用户安全漏洞。具有这些漏洞的应用程序可能会暴露用户信息或损坏用户的设备,并可能被视为违反我们的恶意行为政策。

以下是在您最近提交的文件中检测到的问题和相应 APK 版本的列表。请尽快迁移您的应用以使用更新后的软件,并增加升级后的 APK 的版本号。

漏洞 APK 版本修复 TrustManager 的截止日期 您可以在这篇 Google 帮助中心文章中找到有关 TrustManager 的更多信息。

486 2020 年 9 月 14 日漏洞 APK 版本修复截止日期要确认您已正确升级,请将应用的更新版本提交到 Play 管理中心,并在五小时后回来查看。如果应用程序未正确更新,我们将显示警告消息。

虽然这些漏洞可能不会影响每个应用程序,但最好及时更新所有安全补丁。

如果您对该漏洞有技术问题,可以发布到 Stack Overflow 并使用标签“android-security”。有关解决此问题所需采取的步骤的说明,您可以联系我们的开发人员支持团队。

最好的事物,

Google Play 团队

应用程序版本 486 上添加的唯一新内容是我添加到某些数据中的 RSA 加密。

这种加密是通过以下方式进行的:我手动生成了一个 RSA 密钥对,将私钥存储在我的服务器中,并将公钥与 apk 一起部署。

对于应用程序中的某些请求,我使用公钥加密数据,然后URLConnection在服务器端使用发布请求发送数据,然后对其进行解密和处理,然后将响应发送回用户UNENCRYPTED

所以请考虑以下几点:
0- 应用程序中只有两个使用此技术
的请求 1- 进行此更新是为了确保到达服务器的所有请求都来自我的官方应用程序,因为上周我收到了 3 次 DoS 攻击
2- 这些请求已经存在很长时间了,并且始终使用标准的 android 系统HTTPSUrlConnection而没有任何额外的加密......我现在所做的是添加一个额外的加密层(它怎么能让应用程序不那么安全?) 3- 传输的数据完全无害

我知道什么是 MITM 攻击并且我已经做了很长时间来逆向工程一些应用程序,我不能在不修改编译代码的情况下对我的应用程序进行这种类型的攻击 …

encryption android google-play android-security

8
推荐指数
0
解决办法
1974
查看次数

如何在android中的两个或多个应用程序之间安全地共享数据?

我正在为企业环境制作一个应用程序框架,它涉及来自设备内存的两个或多个应用程序之间的数据共享.这些数据需要存储在设备上,并且只能由少数应用程序访问(可以通过用于安装它们的证书来识别).此外,它需要以安全的方式存储,以便其他第三方应用程序无法访问.哪种方法是实现此功能的最佳方式?

我已经阅读了有关ContentProvidersContentResolvers的内容,根据我的理解,这只会促进此过程.数据的实际存储更重要.我还研究了Android 的Keychain API,它似乎最接近我需要实现的目标.

有没有办法将ContentProvidersContentResolvers与Keychain API 集成?这是正确的方法吗?如果没有,实现同样最佳方法是什么?此外,我还没有找到好的代码示例来完全理解Keychain API的功能.请帮忙!

编辑:
我也看过Keystore API.这内部使用Keychain API并在应用程序之间共享数据,应使用Keychain.虽然我无法找到有关如何使用Keychain API的相同或详细文档或API指南的代码示例.我正在寻找一个与iOS Keychain相当的android .

Android 5中也引入了称为托管配置文件的东西.这是实现我想做的正确方法吗?

android keychain android-contentresolver android-contentprovider android-security

7
推荐指数
1
解决办法
2570
查看次数

在Android中存储密钥

我正在为Android编写应用程序,我必须存储两个密钥,我将使用它来加密/解密某些消息.(我必须存储私钥RSA).我读了:

https://developer.android.com/training/articles/keystore.html#WhichShouldIUse

还有一节标题为:

在Keychain或Android Keystore Provider之间进行选择

但是,我不确定我应该选择哪种方法来获得最安全的解决方案.

请帮我 .

security android keystore android-keystore android-security

7
推荐指数
1
解决办法
768
查看次数

Google Play安全警报 - 您的应用正在使用HostnameVerifier的不安全实施

最近我的一个应用程序收到了来自Google Play的安全警报,如下所示.

您的应用程序正在使用HostnameVerifier的不安全实现.有关修复漏洞和截止日期的详细信息,请参阅Google Play帮助中心文章的链接.

以下是我的代码.

HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier(){ 
    public boolean verify(String arg0, SSLSession arg1) {
        return true;
}}); 
Run Code Online (Sandbox Code Playgroud)

任何人都可以通过示例解释一下,我应该做些什么更改来修复此警告?

android google-play android-security

7
推荐指数
3
解决办法
8924
查看次数

如何解决 Android 10 上的 KeyStoreConnectException?

我的应用程序在除 Android 10 之外的所有 Android 操作系统上运行良好。我使用的是 Motorola One Power 设备,该设备已更新为 Android 10。我们使用 Android Keystore 来加密数据库。

应用程序在 luanch 上崩溃并出现以下错误。

android.security.keystore.KeyStoreConnectException:无法与 javax 处 android.security.keystore.AndroidKeyStoreCipherSpiBase.ensureKeystoreOperationInitialized(AndroidKeyStoreCipherSpiBase.java:256) 处的密钥库服务通信 android.security.keystore.AndroidKeyStoreCipherSpiBase.engineInit(AndroidKeyStoreCipherSpiBase.java:148) 处.crypto.Cipher.tryTransformWithProvider(Cipher.java:2980)

它是 KeyStoreConnectException 问题。应用程序需要一些时间才能连接到 KeyStoreConnectException。

注意:如果我在调试模式下运行应用程序,那么它工作正常。

请帮助我找到解决方案。提前致谢。

android android-keystore android-security keystore-access

7
推荐指数
1
解决办法
1821
查看次数