我正在開發一個具有用戶管理功能的ASP.NET Core Web應用程式。我的問題是關于更改電子郵件地址的演算法。我之前看到的幾乎所有網路應用都有以下流程:
但是我認為,這種演算法可能有點不安全,這就是我想在這里討論的。
這個流程如何?
- 用戶授權 用戶請求更改電子郵件地址用戶在舊郵箱中收到一條帶有確認鏈接的訊息
- 用戶收到一條帶有確認鏈接的訊息。
- 用戶在新郵箱中收到一條帶有第二個確認鏈接的資訊 。
- 用戶點擊該鏈接,電子郵件地址更新 。
在這個程序中
如果在演算法的中間增加這一步驟,從安全的角度來看,事情可能會好得多,但這是否會太復雜?您認為我應該如何實作這種演算法?如果你站在我的立場上,你會更喜歡什么呢?
uj5u.com熱心網友回復:
第二種方案可能聽起來不錯,而且實施起來也不太令人頭痛。但是由于某些原因,我還是堅持采用第一種方法:
常見的作業方式
常見的作業流模式。 由于后端可以由許多語言和不同的開發人員撰寫,所以當我們需要進行某種遷移,甚至由新的開發人員進行維護時,共同的模式會使事情更加標準。如果該專案不需要超安全的認證流程,那么第一種方法的簡單性就足夠了。
從用戶的角度來看,這是很有說服力的 讓我們想象一下,當更改電子郵件地址時,用戶可能想要更改電子郵件地址的情況是什么?我很久以前就用雅虎郵箱注冊了我的facebook賬戶,現在已經不活躍了,我需要換成gmail的。把郵件發回舊的郵箱有什么意義呢?很麻煩......在這種情況下,我除了向作業人員尋求一些幫助外,什么也做不了。
我完全同意從安全角度出發的第二種方法。但這并不適合大多數情況,只有在專案有某些要求的情況下才能實施。即使在這種情況下,我建議也不要這樣做,建立一些類似子管理員賬戶的角色,并將權限授予有責任的人。就像Google企業郵箱一樣,如果用戶賬戶發生任何問題,就組織一個叫做 所有流程的意圖 用戶首先得到了授權,對吧,這意味著我們確定了用戶是什么,以及她能做什么。想象一下,當我們隱藏了一個酒店房間,然后由于某種原因要求換到另一個房間。既然我們都知道這是事實,那么證明我訂了自己的房間有什么意義呢?有點奇怪......對嗎?
總而言之,我認為我們不應該去搞那些已經成為普遍認可的模式的東西,除非我們有一些特殊的要求,專案有一些獨特的東西需要滿足,而且我們認為我們自己,作為開發者,這是合理的。
uj5u.com熱心網友回復: 這種方法的主要問題是:如果用戶不再能夠訪問他們原來的電子郵件帳戶,會發生什么?也許那是一個他們不再擁有的作業/學校/大學賬戶,也許他們只是忘記了他們的密碼或失去了對它的訪問。
使用您的第二種方法,他們將無法更新到新的帳戶,因為他們將永遠不會收到第一個確認鏈接。
下面的方法如何替代: 這樣一來,你仍然向他們提供有人試圖更改他們的電子郵件的提醒(以及可能的阻止手段),但失去對其舊賬戶訪問權的用戶仍然能夠更新其電子郵件。
標籤: 上一篇:二進制搜索猜謎游戲
admin的賬戶。只要它有這種安全級別的要求,它就不會為大量的用戶服務。
