2013-11-20 39 views
0

我有一個傳統的Devise用戶認證系統,它簡單地使用電子郵件和密碼登錄。我想添加Facebook登錄。我有這個主要工作,但我很好奇處理邊緣案件的安全影響。Facebook的Omniauth電子郵件地址可以安全地信任嗎?

讓我們在這裏說這樣的事情發生:

  1. 用戶目前是未經驗證的,但與電子郵件「[email protected]
  2. 用戶點擊「與Facebook登錄」現有的帳戶,從授權訪問Facebook的
  3. 的Facebook回調到我的服務器顯示電子郵件作爲「[email protected]

在這一點上,我們有沒有附加的Facebook憑據的用戶帳戶,我們有一個Facebo沒有附加用戶的確認憑證,但他們都有相同的電子郵件。

所以在這一點上有兩個選擇:

  1. 投訴的用戶認爲該電子郵件地址已被其他用戶使用,而到Facebook添加到自己的帳戶,他們必須首先登錄(與他們的密碼)並關聯Facebook帳戶。
  2. 或者直接登錄到具有相同電子郵件的帳戶,然後將facebook憑證附加到其帳戶。

選項2是首選,因爲它對用戶來說比較容易,但它意味着通過Facebook訪問一個前所未有的Facebook帳戶。如果服務器從Facebook獲得的電子郵件地址可能被欺騙或以任何方式更改,這是一個巨大的安全問題。

但我的服務器相信用戶對電子郵件安全,Facebook也是如此。但我能相信他們之間的溝通嗎?

+0

我不確定您是否注意到,但我鏈接的問題在2周前已更新。顯然Facebook已經修復了它的錯誤,所以如果它已經被確認,你將只收到用戶的電子郵件。既然您現在可以信任該電子郵件,我會相應地編輯我的答案。 – Ashitaka

回答

1

如果電子郵件已在兩項服務上得到確認,您只能鏈接帳戶。

在你身邊,你應該確認用戶的電子郵件(使用Devise's Confirmable module)。

在Facebook上,他們應該發送一個verified_email字段,確認該帳戶的電子郵件地址已被確認。不幸的是,Facebook只返回一個verified field,這不僅受到電子郵件的影響,還受到SMS確認和輸入有效的信用卡的影響。

但是,似乎該電子郵件只會被返回,如果它已被確認。有關更多信息,請參閱this SO question。問題是我找不到證實這一點的官方文檔(this is as close as I could get),所以同時我建議您自己測試一下,以確保絕對可靠。如果您確實找到正確的文檔,請不要忘記在此添加評論。

相關問題