是否可以识别(验证)移动应用程序 HTTP 请求? 例如,来自 Web 服务器的请求可以通过域或 IP 来识别,假设我知道它应该来自哪里,我可以接受请求或拒绝它是否来自意外来源。
doe 的移动应用程序具有某种唯一 ID(无法模仿)?
最佳答案
如果您需要从移动应用程序(本地编译应用程序)进行安全的 HTTP 调用(网络服务 API),您可以尝试以下方法:
编辑:此方法假定您不能依赖操作应用程序的用户进行身份验证(因为这样您就可以简单地要求用户在应用程序中输入安全密码)。
假设您正在实现该应用,请在代码中保存某种 secret API key 。
当应用通过 HTTP 进行 API 调用时,它将始终使用 HTTPS 完成(因此所有内容都是加密的)。
应用会将 secret API key 作为 URL 参数发送。
服务器将通过检查 key 是否正确来进行身份验证。
嗅探应用流量不会泄露 key (因为 HTTPS)。
您最容易受到有人对您的应用进行逆向工程以发现其中的 key 的攻击。这可以通过使用各种混淆和反调试技术变得困难,但不能完全不可能。只要您使用的是编译语言(例如 Objective-C,而不是用于 Web 应用程序的 JS),如果没有任何特殊游戏,这就已经很困难了。如果您避免按原样放置 API key 字符串并在应用中使用一些短代码来计算它,那么发现它的难度就会增加大约 1000 倍。
在不了解您的具体问题的更多信息的情况下,很难提出替代方法。如果您正在寻找不同的东西,请提供更多详细信息。
关于authentication - 识别移动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14922321/