我正在Flash(AS3)中构建一个与Facebook紧密集成的社交媒体应用程序 – 所有用户帐户都通过Facebook连接处理,所有Facebook连接都通过
Javascript和
AS3 Facebook API的组合来处理.我在后端使用
Codeigniter进行服务器端数据管理,其中包括通过Flash中的URLRequests跟踪网站上的用户操作和数据.
我的问题是我不知道如何防止欺骗从Flash发出的服务器请求;理论上,恶意用户可以跟踪Flash对我的服务器进行的调用,并以(例如)插入垃圾数据并将其与我的数据库中给定的Facebook用户ID相关联的方式重现它们.所有身份验证都在客户端进行(通过Facebook JS API),服务器无需干预,因此我很难确定如何以确保用户的方式确保Flash和服务器之间的呼叫安全必须通过Facebook进行身份验证才能生成它们.
我考虑的一种可能性是使用客户端和服务器已知的加密方案来回传递Facebook UID,这肯定比明确传递它们更好.然而,只有一个有进取心的黑客有足够的时间/耐心才能打破这个计划(或者反编译swf)来搞砸一切.
无论如何,我可能会过度思考这一点,但这似乎是一个重点,我真的不确定最好的方法.任何反馈将不胜感激!
解决方法
这是一个合理的担忧,因为你违反了
CWE-603: Use of Client-Side Authentication.加密无法帮助这个站,因为恶意客户端将能够获得任何秘密.
验证客户端的最佳方法是让Flash应用程序将information about the session发送回服务器.然后服务器必须使用诸如php api之类的东西连接回Facebook,以便服务器可以验证客户端与facebook的有效会话.这应该在每次登录时完成一次,然后您可以向Flash应用程序发出会话ID(cookie)以访问该用户的数据存储.