我们有一个 Android 和 iOS 应用程序,它通过 HTTP Web 服务向服务器发送数据和命令。我该如何防止假客户端发送内容到服务器?我该如何在服务器端确定数据/命令是否真的来自我们的应用程序。
您无法完全防止此类行为。有几种技术可以使人们滥用您的服务变得更加困难。一个简单的方法是检查调用您的 web 服务的用户代理。另一个相当常见的方法是在您的 Web 服务器上使用简单的用户名/密码身份验证。用户名和密码将嵌入到您的应用程序中。如果您有足够的时间,您应该考虑使用这两种方法的组合,再加上嵌入式 SSL 证书进行身份验证。您只需将其添加到您的项目中,如果有人真的想滥用您的服务,他至少需要从您的应用程序中提取此证书。还有一些其他有用的技术,但您无法防止反向工程或网络嗅探。此致, fuxx
最强大的解决方案是不去尝试。像DasFuxx的回答所建议的技术可以使它稍微更困难一些,但是有人总会反编译您的应用程序并获取嵌入其中的任何机密信息。相反,请遵循多人游戏开发的规则:不要相信客户端。 将您的应用程序视为用户界面的代理。考虑您的网络协议/API作为用户界面;然后设计该接口以使其无法被滥用。可能不完全可能做到这一点,但在您成功的那一刻,您就拥有了真正的安全(而不是与DRM系统进行同样的苦战)。