我正在使用ASP.Net MVC3构建一个Facebook游戏。 (更像是Mafia Wars,在技术和外观方面不像Farmville)。 几乎所有的游戏操作都将由我们编写的Javascript(它调用REST api)触发。
现在,我们的游戏身份验证是使用Facebook的JS SDK完成的,我们还要求提供离线访问权限。因此,我们会在用户第一次注册时将auth_token保存在我们的数据库中。
我想知道从安全角度来看,在应用程序中执行的操作访问用户ID的最佳方法是什么(并且让人们很难欺骗id)
我知道以下方法:
将其存储在Global javascript变量中,并使用JS SDK在每个页面加载时加载它。 (糟糕的是,因为这可以在Firebug中轻松更改)
使用设置的fbs_ [app-id] cookie从服务器端读取值。 (再次,我能够更改发布到服务器的cookie中的值)
使用C#SDK并执行API提取(for / me)以使用cookie中提供的auth_code获取ID(迄今为止最安全的方式 - 但也是最慢的)
< / LI> 醇>任何指针都将非常感激。 如果我对此过度偏执,请告诉我。
我确信必须有一个我忽略的干净,简单,安全的方法!
感谢。
答案 0 :(得分:0)
我想我会放下我们正在做的事情 - 不久之后会有人绊倒这个。 我查看了Zynga的Mafia Wars,发现我的脸书内容在HTML代码的整个页面中大约有6到7个位置。
我想有人可以尝试使用Firebug进行愚弄并修改它 - 但是那里混淆了javascript的数量,需要有一定的积极性去做。
然而,我们最终做的是如下。 我们的游戏要求离线访问用户 - 因此我们在第一次登录时获得的访问令牌将保存在我们的数据库中。
然后,每当用户执行操作时,与该帐户关联的facebook cookie将返回给我们,我们将从中取出访问令牌。
然后,我们在自己的数据库上查找与此访问令牌对应的用户ID。 如果找不到用户ID(对于新用户,比如说),我们使用facebook api进行GET(“我”)获取用户ID。
稍微无效 - 但我想暂时会这样做。如果我们最终做其他事情,将更新这个。也许我们只是在分析事情。