2012-03-29 261 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