2012-03-29 148 views
0

我正在创建一个Facebook应用程序。 Facebook在iframe中显示应用视图,并在POST参数中为其提供signed_request。signed_request是否安全?

如果有人获得他人的signed_request字符串,他可以将其发布到应用程序。

curl -F "signed_request=CCuTU8c2…NjMwOTMxIn0" https://app.mydomain.xx/ 

Signed_request是篡改。另一方面,应用程序接受没有锻炼的数据。

Facebook应用程序应该检查一些东西吗?例如,issued_at的值。我不知道如何处理signed_request。 Facebook的PHP SDK将其设置为cookie。没关系?

回答

2

这不能伪造,如果你正确地检查它。这是一个已用您的application-secret加密的JSON数据对象。攻击者不能用这个密钥加密,因为你永远不会让任何人知道它,对吧? - 如果你曾经泄露过你的application-secret,那么你有很多其他的方式严重受损;伪造signed_request是您最后的担心。

您需要解密数据并解析结果JSON以确保它与您收到的请求相匹配。如果攻击者发送了他以前使用过的嗅探的signed-request,那么他不能只发送一个任意请求,因为它只会匹配它被盗的请求。 但是您的代码有责任执行此检查。这可能是您的Facebook API客户端库的一项功能,具体取决于所使用的库和配置。

请参阅signed request page at Facebook Developers

而在Facebook的安全性进一步阅读,请参阅在OWASP优秀Developing Secure Facebook Apps文件。

+0

谢谢!我很抱歉我的反应慢。 我的同事也说我太担心了。 – Shinya 2012-06-15 03:25:56