我正在构建一个客户端/服务器 iPhone 游戏,我想阻止第三方客户端访问服务器。这有两个原因:第一,我的收入模式是出售客户并赠送服务,第二,我想避免助长作弊的客户激增。
我正在用 rails 编写服务器的第一个版本,但我正在考虑在某个时候转移到 erlang。
我正在考虑两种方法:
生成一个“用户名”(例如,一个 GUID)并使用应用程序附带的秘密对其进行哈希处理(SHA256 或 MD5),并将结果用作“密码”。当客户端与服务器连接时,两者都是通过 HTTP Basic Auth over https 发送的。服务器使用相同的秘密对用户名进行哈希处理,并确保它们匹配。
使用 iPhone 应用程序发送客户端证书。服务器配置为要求存在客户端证书。
第一种方法的优点是简单,开销低,并且可能更容易混淆应用程序中的秘密。
第二种方法经过了很好的测试和验证,但可能会产生更高的开销。但是,我对客户证书的了解处于“在 Delta Airlines 机上杂志中阅读”级别。这会产生多少带宽和处理开销?每个请求传输的实际数据大约为千字节。