在處理據稱由Facebook發送的signed_request
時,我應該檢查引用者主機嗎?據我所知,這隻會在secret key
受到威脅時有用。處理signed_request。我應該檢查推薦人嗎?
看起來好像所有的signed_requests
都是從86.29.235.94
寄出的。但它也可能是地區性的。
在處理據稱由Facebook發送的signed_request
時,我應該檢查引用者主機嗎?據我所知,這隻會在secret key
受到威脅時有用。處理signed_request。我應該檢查推薦人嗎?
看起來好像所有的signed_requests
都是從86.29.235.94
寄出的。但它也可能是地區性的。
不,引用者是不可預測的。目前沒有明確的規則,可能會有所變化。另外,一些用戶代理甚至不發送一個。
不幸的是,signed_request方案不允許數據機密性(通過加密)或源完整性,但是您確實獲得了數據完整性,所以您至少可以確信Facebook有時會生成有效的signed_request。爲了驗證,你只需要檢查簽名。這並不能保證你不會成爲重播攻擊的受害者,但我不認爲有人曾經解決過這個問題。
您可能可以使用「issued_at」屬性做一些事情,但我沒有足夠的測試知道它是否可以在所有請求中正常工作。
如果您的應用程序的祕密被泄露,接收非法signed_request可能是你最擔心
攻擊者也必須要得到有效的訪問令牌的保持對於應用的用戶之一,以便爲注入一個signed_request來授予他們對你的應用程序的訪問權限,不是嗎?
你說得對。 'access_token'是另一個節目。那麼,沒有太多需要擔心引用主機。 – Gajus 2012-03-14 15:07:36
(所以當然,不要讓任何人獲得應用程序的祕密) – Igy 2012-03-14 15:14:53