signed_request是否安全?

时间:2012-03-29 09:14:14

标签: facebook security

我正在创建一个Facebook应用程序。 Facebook在iframe中显示应用视图,并在POST参数中提供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。没关系?

1 个答案:

答案 0 :(得分:2)

这不能伪造,如果你正确检查。它是JSON数据对象,已使用您的application-secret加密。攻击者无法使用此密钥进行加密,因为您永远不会让任何人知道它,对吧? - 如果你曾经泄露过你的application-secret,你还会以其他许多方式严重受伤;伪造的signed_request是你最后的担忧。

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

请参阅signed request page at Facebook Developers

有关Facebook安全性的进一步阅读,请参阅OWASP上的优秀Developing Secure Facebook Apps文档。