2011-06-28 44 views
0

我正在使用ASP.Net MVC3构建Facebook游戏。 (就技术和外观而言,更像是Mafia Wars,更不像Farmville)。 几乎所有的游戏动作都会被我们写的Javascript(它调用REST API)触发。Facebook应用程序 - 有关用户的Facebook标识的安全考虑事项

现在,我们的游戏身份验证是使用Facebook的JS SDK完成的,我们还要求提供脱机访问权限。所以我们在用户第一次注册时将auth_token保存在我们的数据库中。

我想知道什么是访问用户的ID为但从安全性(并使其很难为人们欺骗IDS)

我点的应用程序中执行的操作的最佳方式知道以下方法:

  1. 将其存储在全局JavaScript变量中,并使用JS SDK将其加载到每个页面加载中。 (坏主意,因为这可以很容易地在Firebug中更改)

  2. 使用设置的fbs_ [app-id] cookie从服务器端读取值。 (同样,我能够更改发布到服务器的cookie中的值)

  3. 使用C#SDK并使用API​​提供的auth_code获取ID(for/me)以获取ID cookie(到目前为止最安全的方式 - 也是最慢的)

任何指针将不胜感激。 也请让我知道,如果我对此过分偏执。

我确定必须有一个干净,简单,安全的方法,我忽略了!

谢谢。

回答

0

我想我会放下我们正在做的事情 - 等待稍后有人绊倒。 我检查了Zynga的黑手党战争,并发现我的Facebook ID在整个页面的HTML代码中几乎遍布6至7个地方。

我想可以尝试使用Firebug来修改它 - 但是在那里混淆了javascript的数量,需要有足够的动力才能做到这一点。

但是,我们最终做的是如下。 我们的游戏要求对用户进行离线访问 - 因此我们在首次登录时获得的访问令牌保存在我们的数据库中。

然后,每次用户执行操作时,与帐户相关联的facebook cookie都会返回给我们,我们会从中抽出访问令牌。

然后,我们在自己的数据库上查找与此访问令牌相对应的用户标识。 如果找不到用户标识(对于新用户),我们使用facebook api来获取用户标识(GET)(“我”)。

这是稍微无效 - 但我想暂时会做。如果我们最终做了其他事情,会更新这个。也许我们只是在分析事情。

相关问题