2013-02-24 210 views
3

我正在为ios应用程序构建后端,它支持登录不同的网络在后端验证GamceCenter用户凭证

一旦到网络的用户登录客户告诉新闻后端,这可能提供世界用户可能发挥,甚至删除旧世界的名单。

窃取他人世界的一种方式是说你是他的社交网络ID。

为了解决这个与Facebook,我们强制客户端发送给我们fb_token,从Facebook提供给客户一个道理,我们在后端使用要求的Facebook如果特定用户是一个他告诉我们要。

如果苹果不提供一种方法来验证这个我明白,如果iOS应用程序要使用游戏中心,它直接迫使应用开发者也使用iCloud的因为苹果可以验证用户凭据。

苹果是否提供任何方式来验证用户凭据?

+0

是的,与iOS应用程序的通信是加密和签名的,但所有系统的安全性都可以绕过。 – Guillermo 2013-02-24 11:12:38

回答

0

iOS上的客户端可以检索有关当前登录的GameCenter中的播放器的信息,该播放器与iCloud无关。 如果您想使用iCloud进行身份验证,您可能会拥有与您想要的不同的玩家。

我认为解决方案是让客户端在GameCenter中检索播放器信息,并以加密方式(比如HTTPS)将其发送到服务器,包括时间戳和其他可能的动态信息。这样你就会知道用户信息是从客户端应用程序本身发出的,并且没有人在中间。这就是你正在努力的问题:如何确保客户端 - 服务器通信的安全。

+0

正如评论中所述,通信是在设备首次登录系统时通过https传输的密码进行签名的。 客户端可以在从api获取game_center_id之后,在与后端进行通信并使用来自玩家的不同game_center之后,例如更好的世界或进度,来钩住debuger。从现在起,黑客可以在其他用户的世界中玩,并且在后端无法检查客户端是否合法。使用脸书我们要求脸书服务器,看看用户是否是假装的。 – Guillermo 2013-03-02 01:06:36

+0

所以你假设黑客可以反汇编使用的协议,并找出使用的密码,并在流中注入不同的GCid。这是一个艰巨的任务。除非你的游戏沟通清楚了,这是错误的。使用https来处理所有事情,如果你喜欢,可以使用时间戳和其他内容对CGid进行加密,黑客需要彻底分解该程序来确定发生了什么。 – Rikkles 2013-03-02 09:30:32

+0

是的,之前发生的事情是,一个用户这样做,发布一个exe文件,允许所有用户以一种简单的方式做到这一点。即使在游戏论坛中销售该应用的人也是如此。 问题是没有访问别人的数据。正在成为别人。 – Guillermo 2013-03-02 10:26:46