我正在创建一个Facebook应用程序。Facebook在iframe中显示应用程序视图,并在signed_request参数中为其提供POST。
如果有人得到了别人的signed_request字符串,他就可以将其发布到应用程序中。
curl -F "signed_request=CCuTU8c2…NjMwOTMxIn0" https://app.mydomain.xx/Signed_request注册为篡改。另一方面,应用程序接受未经篡改的数据。
Facebook应用程序应该为它检查一些东西吗?例如,issued_at的值。我想知道如何处理signed_request。Facebook的PHP SDK将其设置为cookie。还好吗?
发布于 2012-03-29 18:03:45
如果你检查得当,这是不能伪造的。它是使用application-secret加密的JSON数据对象。攻击者不能用这个密钥加密,因为你从来不会让任何人知道它,对吧?--如果你曾经泄露过你的application-secret,你的signed_request在很多其他方面都很糟糕;伪造的the是你最后的担忧。
您需要解密数据并解析生成的JSON,以确保它与您收到的请求相匹配。如果攻击者发送了他从以前的使用中嗅探到的signed-request,那么他不能只发送一个任意请求,因为它只会与窃取它的请求相匹配。但执行此检查是您的代码的责任。这可能是您的Facebook API客户端库的一个功能,具体取决于所使用的库和配置。
请参阅signed request page at Facebook Developers
有关Facebook安全的更多信息,请参阅OWASP上优秀的Developing Secure Facebook Apps文档。
https://stackoverflow.com/questions/9922380
复制相似问题