譯 搭建賬戶系統

2021-09-23 00:24:06 字數 2108 閱讀 6160

本文講的是[譯]搭建賬戶系統,

譯文出自:掘金翻譯計畫

譯者:shawnchenxmu

校對者:undead25

deadlion

電子郵箱的認證

賬戶登出,常常比你想象的要困難(見下文)

密碼的強力保護

基於簡訊、手機應用和硬體金鑰的雙因子驗證

對賬戶劫持的保護(當攻擊者已經知道了正確密碼而使用者還沒有雙因子驗證時)

使用者的地區、語言、姓名、個人頭像等的偏好

對桌面和移動端的登入支援

異常行為的通知

只允許特定手機的登入

如果使用者名稱成為你的系統的個人識別符,你要考慮使用者是會隨時更改它的

使用者經常會忘記使用者名稱,可一般不會忘記郵箱或**號碼

挑選使用者名稱的過程常常是讓人沮喪,一旦使用者使用了乙個使用者名稱,卻因為該使用者名稱已經存在而不能通過時,有些人就會放棄了,從而你就流失了一位使用者

將使用者名稱和用來展示的名字分開可以大大減少對使用者設定的限制,例如禁止空格

預設的問題使得猜測的現象更加嚴重

預設問題往往帶有文化差異,從而使得它們對於許多使用者並不友好(例如:『你們高中學校的吉祥物是什麼?』)。

一些『精明』的使用者意識到他們不能想出乙個難以猜測的答案,所以僅僅在這個位置填入密碼,導致了他們在忘記密碼時無法恢復。

還有一堆的高階黑客,會在密碼恢復流程上做點文章,你可不希望這事發生在你身上吧。

問:你是在星期幾結的婚?答:星期四 是使用者自定義的問題,但卻有個致命的缺陷 —— 一般攻擊者只需要嘗試 5 次,就能破解正確答案。而這還不至於被檢測為暴力破解。

問:我是在哪個城市出生的?答:首爾在一些國家裡,大多數人會聚居在少數的幾個大城市裡。觀察 id 驗證使用者介面所使用的語言,可大大縮小可能的城市列表。通過這個問題,你能夠破解 40% 的使用者。

問:我的第一位老師叫什麼名字?答:mr smith, smith, john, john s. smith,john smith, jon smth。 這些都是正確答案,但是卻不能正確通過。我為這些問題提供了模糊匹配的模式,因為使用者的答案總是差那麼一點兒。匹配邏輯通常需要了解一些問題背景(『編輯距離』演算法本身不足以滿足諸如街道位址等的情況)。你還得讓你的產品支援多語言,祝你好運吧。

大量的簡訊或**將會是一筆大的開銷,即使你能通過大批量獲得優惠。

人們可能常常會更換**號碼。如果你的密碼恢復流程是基於電子郵件位址的,那麼這個過程將會變得很容易。但是一旦你的系統引入了穩定的雙因子認證,密碼恢復將變成你系統中的乙個漏洞。如果你不去修復它,攻擊者將會很輕鬆地進行破解。而如果你嘗試阻止它也並不會起作用。

雙因子驗證會被攻擊者濫用,他們將它新增到釣魚或者黑入的賬戶裡。這是為了在執行惡意活動期間,防止真正的使用者取回該賬號。

**號碼很容易受到移植攻擊,所以如今的趨勢是要求使用者設定移動應用或安全金鑰。為了實現這項措施意味著更多的工作,當然,這兩項可能都不管用,所以你最終還是需要一些客戶支援流程來幫助他們恢復。

如你所見,雙因子驗證增加了大量客戶的手動操作,因為你不再使用密保問題或電子郵件的方式恢復使用者的密碼了。而這個開銷很大。

使用者可比你聰明,他們會更改密碼(一次、兩次、三次),然後立即將其更改為舊密碼,這意味著你得儲存最近密碼的歷史記錄以防止此類行為。但我敢打賭,你不會這樣做的。

這樣並不會增加安全性。

會話有效期這一設定使得使用者習慣於意料之外的密碼提示,這使得他們非常容易被欺騙。

儲存有效期的隨機性會產生大量的 bug,導致了你的開發人員將大量的時間花在了修復 bug 上。你的**的大部分**應該不能處理這種,在乙個操作中途,使用的會話過期了的情況,所以你必須返回去修復它,前提是你能夠發現的話。而由於使用者報告的隨機性,這使得追蹤錯誤變得更加困難了。

將時間戳新增到會話 cookie,然後設定『最後登出時間』,每個操作都需要檢查帳戶資料庫,以了解使用者的會話是否過舊。這可能會導致操作響應變慢,意味著開發人員將要對此進行優化(畢竟這似乎也沒什麼)。但是如果他們移除了對攻擊者感興趣的乙個埠的檢查,那麼你在第一步中遇到問題將會再次出現。另外,這意味著退出乙個瀏覽器或裝置,就會將所有使用者登出,這不是預期的行為。

原文發布時間為:2023年9月8日

svn建立賬戶

1 找到svn安裝路徑 我的是 home ssl repos rogue server conf 如果不知道,可以搜尋 find name svn 2 進入該目錄的conf,其中包含authz passwd svnserve.conf三個檔案 3 進入passwd,在 users 下面加上你要新增的...

Ubuntu之建立賬戶

sudo useradd m mtest1 s sbin nologin sbin nologin 此時無法登陸系統,即使給了密碼也不行。所謂 無法登陸 指的僅是這個使用者無法使用bash或其他shell來登陸系統而已,並不是說這個賬號就無法使用系統資源。舉例來說,各個系統賬號中,列印作業有lp這個...

Postgresql 建立賬戶,修改密碼

sudo su postgres psql password postgres 輸入密碼 q 本機除錯的時候,最好在裝完以後新增乙個pgsql的管理員帳號,否則phppgadmin不讓登陸 建立使用者 sudo su postgres psql create user myuser with pas...