【问题标题】:Application authentication应用认证
【发布时间】:2012-06-15 14:10:44
【问题描述】:

应用程序如何向服务器验证自己的身份?假设我发布了一个可以连接到我的 Web 服务器的 android 应用程序。

有什么方法可以确保客户使用我制作的应用程序,而不是第三方的应用程序?我认为可以进行逆向工程以获取我的应用程序的源代码(似乎 proguard 并不完全安全),因此第三方可以轻松地使应用程序冒充我的应用程序。

TLS/SSL 能否解决此问题,如果可以,如何解决?我可以要求客户端向我的服务器发送来自受信任机构的证书,从而将身份验证的责任交给受信任的机构。但这在实践中如何运作?假设我生成了自签名证书,我将其添加到服务器信任库中。如何安全地将这些分发给应用用户?

也许我在这里遗漏了一些基本的东西,但任何能指引我正确方向的东西都会有所帮助!

【问题讨论】:

    标签: android security authentication ssl certificate


    【解决方案1】:

    一般来说,你不能。应用程序代码是公开的 - 没有什么可以阻止坏人对其进行逆向工程并将协议模拟为 tee。更多讨论here

    代码混淆是您最好的选择。特别是在 Android 上,请查看 ProGuard。没有坚如磐石的保证,但也许坏人会失去耐心。 :)

    【讨论】:

    • 怎么样,在用户认证过程中,可能还包括整个应用程序的哈希值,然后将其与存储在服务器上的哈希值进行比较?但是接下来当然会出现问题 - 我将如何从应用程序内部生成整个应用程序的哈希? :)
    • 另外,什么会阻止坏人散列 your 应用程序并将值放入他们的协议身份验证中?他们正在模拟线路级协议,但不是您的实现。
    猜你喜欢
    • 2015-07-07
    • 2016-03-21
    • 2017-05-01
    • 2012-01-07
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多