2011-10-12 37 views
3

我正在使用iframe方法編寫一個新的畫布應用程序。我的後端支持HTTP和HTTPS作爲畫布響應,但默認情況下,Facebook將用戶放在HTTP上,並通過HTTP直接以純文本形式發送所有重要憑據(即signed_request負載中的訪問令牌等)。這當然是共享網絡(咖啡店,辦公室等)的安全漏洞,在這種情況下嗅探訪問令牌是微不足道的。)我是否可以要求使用HTTPS for canvas url來保護signed_request內容?

如何強制所有畫布請求通過HTTPS進行操作並保護我用戶憑據?

我認爲所有的開發者都應該想要或者需要這樣做。雖然我是Facebook開發新手,但我很驚訝他們不會使用HTTPS來進行所有用戶訪問令牌的直接傳輸。 Oauth 1.0具有通過HTTP使用訪問令牌的機制(因爲請求必須由客戶端應用程序簽名),但OAuth 2.0取消了所有這些,贊成使用HTTPS來處理任何帶有嵌入憑證的請求。 Facebook幫助設計了OAuth 2.0,並通過偏離畫布請求中的HTTPS使用來破壞設計的安全性。

回答

0

您可以使用PHP或JavaScript輕鬆完成此操作。您只需檢測用戶是否使用HTTP並將其重定向到HTTPS即可。示例:

<script> 
if (window.location.protocol == 'http:') { 
    window.top.location = 'https://facebook.com/yourapp'; 
} 
</script> 

上述代碼將檢查iframe是否使用HTTP加載。如果是,它會重置父URL(即Facebook)以指向您的網站的HTTP版本(因此也使用HTTPS加載iframe)。

+0

謝謝,但是在這個JavaScript執行的時候,重要的會話憑證已經通過HTTP以明文方式發送了。爲了確保會話安全,它必須從一開始就是HTTPS ... – Yetanotherjosh

+0

您可以隨時從App設置中刪除用於訪問您的應用的非安全URL。 –