簡體   English   中英

可以安全地信任Facebook Omniauth電子郵件地址嗎?

[英]Can Facebook Omniauth email address be securely trusted?

我有一個傳統的Devise用戶身份驗證系統,該系統僅使用電子郵件和密碼即可登錄。 我想添加Facebook登錄。 我的工作大部分都在進行,但是我對處理邊緣案例的安全性感到好奇。

假設發生這種情況:

  1. 用戶當前未經身份驗證,但是擁有一個具有電子郵件“ foo@bar.com”的現有帳戶
  2. 用戶單擊“使用Facebook登錄”,授權來自Facebook的訪問
  3. Facebook回呼我的服務器,顯示電子郵件為“ foo@bar.com”

此時,我們有一個用戶帳戶,沒有附加的Facebook憑據,並且我們有一個Facebook憑據,沒有附加的用戶,但是他們都有相同的電子郵件。

因此,目前有兩種選擇:

  1. 向用戶投訴該電子郵件地址已被另一個用戶使用,並且要將Facebook添加到他們的帳戶,他們必須首先登錄(使用密碼)並關聯Facebook帳戶。
  2. 或者直接將他們登錄到具有相同電子郵件的帳戶,然后將facebook憑據附加到他們的帳戶。

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

但是我的服務器相信用戶可以安全地接收電子郵件,Facebook也是如此。 但是我可以信任他們之間的通信嗎?

如果兩個服務均已確認電子郵件,則只能鏈接帳戶。

在您這一邊,您應該確認用戶的電子郵件(使用Devise的Confirmable模塊 )。

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

但是,似乎只有在確認電子郵件后,才會退回該電子郵件。 有關更多信息,請參見此SO問題 問題是我找不到可以證實這一點的官方文檔( 這與我能得到的非常接近 ),因此與此同時,我建議您自己進行測試,以確保絕對正確。 如果您找到正確的文檔,請不要忘記在此處添加評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM