代码之家  ›  专栏  ›  技术社区  ›  niafara

如何在安卓截取中使用ssl时提高安全性

  •  1
  • niafara  · 技术社区  · 7 年前

    我为我的问题搜索了2天,但我没有找到它。

    我已经在我的服务器上安装了comodo ssl/tls证书,我正在使用android volley库连接到服务器,直到现在我只使用了“https://...“对于我的url,并通过https连接到我的服务器没有问题。 但我最近在我的手机上安装了“数据包捕获”android应用程序,默认情况下,如果手机没有根目录,它就无法从我的应用程序向服务器检索帖子/回复信息,但当你使用根目录手机时,数据包捕获应用程序会要求你在手机上安装自定义证书,这样它甚至可以检索ssl/tls连接,起初我觉得这是在开玩笑,但在安装证书后,它显示了ssl连接到我的服务器时使用的全部信息。。。

    请告诉我一种方法,使我的应用程序的连接更安全。

    对不起,我的英文打字很差:)

    编辑: https://github.com/faruktoptas/volley-public-key-pinning

    希望它能帮助其他有同样问题的人

    3 回复  |  直到 7 年前
        1
  •  2
  •   Ch4t4r    7 年前

    应用程序的工作方式如下(总结):

    1. 你的应用程序尝试与服务器建立连接
    2. 应用程序捕获请求并转发

    这是一种典型的中间人攻击,因为你使用的应用程序的证书是可信的。您无法阻止根用户破坏您的加密。


    你唯一能做的就是默默无闻地保护自己。尝试对您的值进行编码(互补值,或使用应用程序中存储的密钥对其进行加密)或发送整个请求的哈希。这将把大多数人(非技术人员)拒之门外,但没有绝对的方法阻止用户以这种方式作弊。你也可以使用一次性令牌(盐的工作方式)来编码你的重要值。混淆源代码也会有所帮助。但同样,没有绝对的方法,这只是在为用户铺石头,甚至可能欺骗他们。这大大增加了计算方法所需的时间。

    • 一些根设备是测试或存储设备(Kiosk模式);让这占所有根设备的15%
    • 只有非常精通技术的用户才能使用模糊安全原则来计算如何作弊。如果这对20%(同样,这是一个非常高的数字)的所有符合上述条件的用户来说是真的,那么我们是所有安卓用户的1.7%。
    • 最大值时 .


    一种更激进的方法是阻止所有根用户。
    编辑:另一个答案表明,您可能正在使用公钥锁定。请记住,并非所有用户都会在你发布新版本后立即更新,如果他们不更新,那么你的应用程序就会变得毫无用处。因此,风险很小。

        2
  •  1
  •   user8555433    7 年前

    我不确定你的应用程序是用什么编程语言编写的,但你可以研究证书固定来防止这些攻击。您的代码将在发送任何请求之前检查SSL证书,如果值不匹配,您的应用程序可能会失败并显示错误消息。

    https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning