android - 应用认证

标签 android security authentication ssl certificate

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

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

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

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

最佳答案

一般来说,你不能。应用程序代码是公开的——没有什么可以阻止坏人对其进行逆向工程并将协议(protocol)模拟到发球区。更多讨论 here .

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

关于android - 应用认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11052306/

相关文章:

asp.net - 使用 jQuery 将数据发布到 ASP.net,我这样做是否足够安全?

iphone - 向网站发送请求(例如登录)?

authentication - 使用 OpenID 的 Joomla 2.5 自定义身份验证插件

Android:为特定应用程序打开 Marketplace 的特殊 url?

java - Android 8 上不显示通知

javascript - 允许用户安全地将 HTML 保存到数据库吗?

php - 使用已使用 filter_input() 过滤的 htmlspecialchars() 从数据库输出数据

azure - 权限不在有效列表中 : 'authority' is not in the list of valid addresses

android - 如何从城市名称android代码获取经度,纬度

java - 安卓谷歌地图报错android.view.InflateException : Binary XML file line #6: error initiating class fragment