Troy Hunt最近發(fā)布了一篇博客颅筋,標(biāo)題是“Authentication guidance for the modern era”吓妆。里面針對(duì)網(wǎng)站該使用什么樣的密碼規(guī)則給出了很多忠告,并引用了政府的特別建議馆揉,這對(duì)成功忽悠你的同事和老板非常有用。
我在google上班時(shí)做的其中一個(gè)項(xiàng)目是統(tǒng)一賬戶系統(tǒng)(特別是其反劫持功能)生逸。大多數(shù)網(wǎng)站都有用戶登錄系統(tǒng)啦辐,所以讀Troy的文章鼓勵(lì)了我把構(gòu)建這些系統(tǒng)的建議整理到一起赞厕。
1.最好的做法是榔昔,不做
不管你網(wǎng)站的業(yè)務(wù)是什么驹闰,用戶認(rèn)證都不是你的核心競(jìng)爭(zhēng)力所在。現(xiàn)代登錄系統(tǒng)被期望實(shí)現(xiàn)很多功能撒会,密碼管理只是一個(gè)開(kāi)始嘹朗。如果你做的比較成功,你最后又會(huì)想要這些玩意兒:
- 忘記密碼的重新找回
- email地址驗(yàn)證
- 用戶登出诵肛,這可比它看起來(lái)的要難多了(后面會(huì)講)
- 密碼暴力破解的防護(hù)
- 通過(guò)短信骡显、app、硬件密鑰的雙因素認(rèn)證
- 對(duì)于賬戶劫持的防護(hù)(當(dāng)攻擊者已經(jīng)知道了正確的密碼而用戶又沒(méi)有使用雙因素認(rèn)證的時(shí)候)
- 地區(qū)/語(yǔ)言/名字/頭像照片的偏好
- 對(duì)手機(jī)/電腦注冊(cè)的支持
- 關(guān)于異常行為的通知
- 只允許手機(jī)登錄
隨著大公司們提升了用戶期望曾掂,而攻擊者也變得更牛逼,保持自己更上步伐的努力正變得越來(lái)越不切實(shí)際壁顶。幸運(yùn)的是珠洗,你可以把認(rèn)證功能外包給那些使用OAuth的公司。
Web開(kāi)發(fā)者通常把“通過(guò)Facebook登錄”或者“通過(guò)Google登錄”按鈕看作是一種可選的錦上添花的可選功能若专,在實(shí)現(xiàn)了自己的賬戶系統(tǒng)之后才會(huì)考慮许蓖。如果你看這篇文章是因?yàn)槟阏趶念^做一個(gè)新網(wǎng)站,那么我的建議你把“通過(guò)…登錄”作為提供給用戶的唯一選項(xiàng)调衰。這個(gè)年代構(gòu)建自己的賬戶系統(tǒng)膊爪,就像是建造自己的數(shù)據(jù)中心而不是直接使用AWS。這是一種相當(dāng)昂貴的消遣嚎莉。
有時(shí)候人們會(huì)擔(dān)心如果他們只提供第三方登錄米酬,那么大的ID提供商可能會(huì)在某一天嘗試竊取他們的用戶。這一擔(dān)憂的常見(jiàn)表現(xiàn)是用戶通過(guò)第三方登錄之后會(huì)被要求設(shè)置一個(gè)密碼趋箩。不要擔(dān)心這一點(diǎn):如果這種不太可能的事情真的發(fā)生了赃额,你總是可以把用戶中心遷移到一個(gè)你自己的新系統(tǒng)加派,只需要簡(jiǎn)單地給用戶發(fā)送一個(gè)鏈接就好了。
2.使用email/手機(jī)號(hào)來(lái)識(shí)別用戶
別要求用戶挑用戶名跳芳,哪怕你是想提供像論壇那樣的面向用戶名的使用體驗(yàn)芍锦。對(duì)于你而言,總是通過(guò)email和/或手機(jī)號(hào)來(lái)識(shí)別用戶的飞盆,如果你希望一個(gè)不同的名字用于用戶之間的相互識(shí)別(一個(gè)顯示的名字)娄琉,那么應(yīng)該單獨(dú)選擇。為什么呢吓歇?
- 無(wú)論如何你總是會(huì)要求提供email地址的孽水。
- 如果用戶名在你的服務(wù)中變成了一種表達(dá)自我的形式,那么用戶會(huì)三天兩頭地修改照瘾。
- 用戶容易忘記用戶名匈棘,而不是他們的email地址和手機(jī)號(hào)。
- 挑用戶名是一件會(huì)讓人沮喪的事析命。每一次用戶看到選擇的名字已經(jīng)被占用的時(shí)候主卫,有些人就直接放棄了,于是你獲得用戶的通道就變窄了鹃愤。
- 把用戶名和顯示名分開(kāi)簇搅,將會(huì)減少對(duì)用戶名形式加上各種限制的誘惑,比如软吐,禁止使用空格瘩将。
3.不要使用密碼
如果你沒(méi)有準(zhǔn)備好完全依賴第三方ID供應(yīng)商,那么磅友你至少幫幫忙不要讓用戶設(shè)置密碼凹耙。
這并不像聽(tīng)起來(lái)那么蠢姿现。你已經(jīng)要求用戶提供自己的email地址了。登錄系統(tǒng)上線之后你會(huì)加上的第一個(gè)特性就是找回忘記的密碼肖抱,而這肯定是以給用戶發(fā)送一封包含鏈接的郵件來(lái)實(shí)現(xiàn)的备典。所以任何一個(gè)可以看你用戶郵件的人都可以用他們的身份登錄,你的網(wǎng)站上的用戶密碼完全沒(méi)有增加額外的安全性意述。
所以跳過(guò)這第一步直接進(jìn)入第二步吧——你的登錄系統(tǒng)可以簡(jiǎn)單地直接給用戶發(fā)一封包含鏈接的郵件提佣,點(diǎn)擊后設(shè)置一個(gè)登錄cookie。舉個(gè)例子荤崇,Medium.com就是這樣做的拌屏。
這個(gè)解決方案只要是在用戶用于登錄的所有設(shè)備上都有郵件客戶端就可以。對(duì)于桌面電腦术荤、筆記本倚喂、手機(jī)、平板等這個(gè)條件都是成立的喜每。游戲機(jī)和電視就沒(méi)這條件了务唐,但是這些也不太可能是你面向的客戶設(shè)備雳攘。如果碰巧是的話,那么你最好使用類似于藍(lán)牙的配對(duì)處理枫笛,因?yàn)檫@些東西沒(méi)有方便的鍵盤吨灭。
過(guò)去有意見(jiàn)說(shuō)如果沒(méi)有密碼輸入框的話用戶會(huì)難以理解,但是Google網(wǎng)站的現(xiàn)代化登錄體驗(yàn)就是從只要求用戶提供email地址開(kāi)始的刑巧,所以用戶已經(jīng)不太可能會(huì)因此感到困惑了…而且這樣做的好處真的很大喧兄。
這方案還有個(gè)額外的好處:有些用戶有手機(jī)號(hào),但是卻沒(méi)有email啊楚,尤其是在發(fā)展中國(guó)家吠冤。所以如果這些國(guó)家是你網(wǎng)站潛在的目標(biāo)市場(chǎng),你最終可能會(huì)需要支持那些只能通過(guò)用手機(jī)接收代碼來(lái)登錄的用戶恭理。這樣的賬戶將根本就沒(méi)有密碼拯辙,所以你如果假定所有用戶都有密碼的話,你就不得不轉(zhuǎn)頭為那些安全敏感的代碼執(zhí)行路徑增加大量的特殊案例(這很容易引起致命錯(cuò)誤)颜价。
4.不要使用密保問(wèn)題
如果你不得不使用密碼——也許你就是懶得去跟老板解釋為什么你是如此特立獨(dú)行——至少不要再讓用戶使用密保問(wèn)題來(lái)恢復(fù)密碼了涯保!
- 密保問(wèn)題的答案通常很容易猜,用戶發(fā)現(xiàn)要想出一個(gè)只有他們自己能回答的問(wèn)題真的是太難了周伦。
- 如果預(yù)設(shè)密保問(wèn)題的話夕春,答案就更容易猜了。
- 預(yù)設(shè)的密保問(wèn)題通常還會(huì)有文化偏見(jiàn)专挪,從而對(duì)大部分用戶而言是沒(méi)有意義的(比如及志,你高中學(xué)校的吉祥物是什么?)
- 有些聰明的用戶意識(shí)到自己想不出難猜的問(wèn)題之后寨腔,索性就直接把密保問(wèn)題當(dāng)作了第二個(gè)密碼字段速侈,這就又回到了忘記密碼的問(wèn)題。
- 通過(guò)濫用密碼恢復(fù)流程實(shí)現(xiàn)黑客攻擊的案例有很多迫卢,你不會(huì)希望自己成為其中之一锌畸。
Google曾經(jīng)也遇到過(guò)很多關(guān)于密保問(wèn)題的嚴(yán)重問(wèn)題。我的一些老同事發(fā)布了關(guān)于這些問(wèn)題的研究靖避,值得一看。
以下是一些有問(wèn)題的密保Q/A的例子:
- Q:最喜歡的食物比默。A:批薩幻捏。答案總是批薩。用這個(gè)回答你只要猜一次就可以侵入英語(yǔ)國(guó)家20%的賬戶命咐。猜10次你就可以侵入英語(yǔ)國(guó)家里三分之一的設(shè)置了這個(gè)問(wèn)題的賬戶篡九。對(duì)于韓國(guó)的賬戶,猜不到10次就可以侵入其中的43%醋奠。
- Q:你結(jié)婚是在禮拜幾榛臼?A:禮拜四伊佃。這是個(gè)自定義的密保問(wèn)題,有致命的缺陷沛善。攻擊者只需要猜5次就夠了航揉,這對(duì)于檢測(cè)暴力破解而言實(shí)在是太少了。
- Q:我在哪個(gè)城市出生金刁?A:首爾帅涂。在有些國(guó)家,幾乎所有人都生活在屈指可數(shù)的幾個(gè)大城市里尤蛮。觀察身份驗(yàn)證界面所用的語(yǔ)言就能顯著縮小可能城市的范圍媳友。對(duì)于韓國(guó)的賬戶你只需要猜10次就能侵入40%的使用該問(wèn)題的賬戶。
- Q:我的第一個(gè)老師叫啥产捞?A:趙老師醇锚,趙建國(guó),老趙坯临,建國(guó)焊唬。所有這些回答都是正確的,但是一個(gè)簡(jiǎn)單的實(shí)現(xiàn)方案是無(wú)法做好匹配的尿扯。我為這類問(wèn)題增加了模糊匹配求晶,因?yàn)橛脩艨偸恰安钜稽c(diǎn)”回答正確。匹配邏輯通常需要在一定程度上理解密保問(wèn)題(Levenshtein距離本身對(duì)于街道地址這樣的東西是低效的)衷笋。在為你的產(chǎn)品支持的所有語(yǔ)言實(shí)現(xiàn)這類匹配的時(shí)候芳杏,哦,菩薩保佑你辟宗!
毫不意外爵赵,專業(yè)的賬戶系統(tǒng)不會(huì)只使用密保問(wèn)題來(lái)允許用戶恢復(fù)密碼。這只是眾多信號(hào)中的一個(gè)泊脐。我保證你只有不到2%的可能性能夠?qū)懗鲎銐蚓艿南到y(tǒng)使得功能正確空幻。這就是為什么Google逐步淘汰了密保問(wèn)題,改而支持使用短信恢復(fù)密碼容客★躅酰基于短信的密碼恢復(fù)功能也有它自身存在的問(wèn)題,但與密保問(wèn)題相比仍然好太多缩挑。
5.避免使用圖片驗(yàn)證碼
圖片驗(yàn)證碼是登錄表單的常見(jiàn)特性但两。我在Google的時(shí)候也對(duì)這方面有過(guò)一些投入。不幸的是供置,驗(yàn)證碼在今天已經(jīng)沒(méi)有什么價(jià)值谨湘,并且經(jīng)常被實(shí)現(xiàn)得很糟糕。
關(guān)于驗(yàn)證碼,需要理解的是它們只是在對(duì)自動(dòng)化攻擊施加基本的流量限制時(shí)才有用紧阔。它們無(wú)法保護(hù)你的系統(tǒng)避免批量注冊(cè)坊罢。除了賬戶安全之外我還花了幾年時(shí)間在Google的注冊(cè)濫用上∩玫ⅲ看著垃圾郵件發(fā)送者解決我們數(shù)以百萬(wàn)計(jì)最難的驗(yàn)證碼活孩,幾乎成了我們的日常。有些專業(yè)的破解驗(yàn)證碼的公司秫筏,如DeathByCaptcha诱鞠,混合使用了OCR技術(shù)和人工識(shí)別。傳統(tǒng)的驗(yàn)證碼阻擋了盲人用戶進(jìn)行注冊(cè)这敬,這也是一個(gè)問(wèn)題航夺,但基于語(yǔ)音識(shí)別的驗(yàn)證碼要么輕松被計(jì)算機(jī)解決,要么就是人識(shí)別不了崔涂。
驗(yàn)證碼最有用的地方是阻塞對(duì)密碼的暴力破解阳掐。針對(duì)某個(gè)賬戶的暴力破解可能會(huì)需要數(shù)百萬(wàn)次的嘗試才能找出正確的密碼。在不影響到用戶的情況下阻止暴力破解的簡(jiǎn)單方法是冷蚂,在最近幾次登錄失敗之后開(kāi)始要求輸入驗(yàn)證碼缭保。就算是很簡(jiǎn)單的驗(yàn)證碼也足以給自動(dòng)循環(huán)碰撞帶來(lái)一小段延時(shí)。
而對(duì)于阻止批量的賬戶注冊(cè)蝙茶,驗(yàn)證碼就沒(méi)那么有用了艺骂。構(gòu)建一套系統(tǒng)來(lái)檢測(cè)并阻止這類行為是完全不同的博弈,我曾花費(fèi)了好幾年的時(shí)間參與在其中隆夯。相對(duì)其困難程度有一個(gè)感性認(rèn)識(shí)的話钳恕,可以去buyaccs看一下不同的地下賬戶販賣者提供的報(bào)價(jià)之間的巨大差異。較高的價(jià)格意味著面對(duì)防御能力更強(qiáng)的系統(tǒng)蹄衷。除非你是Big5之一忧额,不然你不太可能超過(guò)我們?cè)谫~戶注冊(cè)安全方面的成果——這是另一個(gè)把登錄系統(tǒng)外包給專業(yè)公司的理由。
如果你仍然堅(jiān)持要用驗(yàn)證碼的話愧口,那就使用reCAPTHA睦番,并確保你的驗(yàn)證碼能夠抵御重放攻擊。不要試圖自己實(shí)現(xiàn)耍属,或者使用在Github上找到的工具托嚣,這類驗(yàn)證碼毫無(wú)例外地被現(xiàn)代OCR技術(shù)輕易破解,除了減少你的用戶注冊(cè)率之外不會(huì)帶來(lái)任何影響厚骗。
6.把雙因素認(rèn)證外包出去
現(xiàn)在雙因素認(rèn)證已經(jīng)是一個(gè)常見(jiàn)特性注益。同樣的,要做好這個(gè)功能很難溯捆、很貴,所以不要試圖自己去實(shí)現(xiàn)。
- 短信并不可靠提揍,尤其是在某些國(guó)家啤月。恢復(fù)碼它就是偶爾無(wú)法收到劳跃。你將最終想要實(shí)現(xiàn)利用了語(yǔ)音合成技術(shù)的電話方案谎仲,因?yàn)榇螂娫捯煽康枚唷5乾F(xiàn)在你就需要一個(gè)多語(yǔ)言的語(yǔ)音合成引擎了刨仑。
- 發(fā)大量短信郑诺、打很多電話都是相當(dāng)費(fèi)錢的事情,哪怕你能跟運(yùn)營(yíng)商協(xié)商得到好的折扣杉武。
- 人們經(jīng)常無(wú)法使用自己的手機(jī)號(hào)辙诞。如果依賴email那么你的密碼恢復(fù)流程流程就能相當(dāng)簡(jiǎn)單;一旦可靠雙因素認(rèn)證被引入轻抱,你的密碼恢復(fù)流程就成了系統(tǒng)最弱的地方飞涂。你不升級(jí)功能,攻擊者就能輕松繞過(guò)祈搜;你要是成功阻止了他們较店,接著你會(huì)發(fā)現(xiàn)…
- 黑了賬戶的黑客也會(huì)給賬戶添加雙因素認(rèn)證,來(lái)防止賬戶的真正所有者在惡意行為期間找回賬戶容燕。
- 電話號(hào)碼在端口攻擊面前是脆弱的梁呈,所以現(xiàn)在的趨勢(shì)是要求用戶安裝手機(jī)app或密鑰。要實(shí)現(xiàn)這些意味著更大的工作量蘸秘,并且毫無(wú)疑問(wèn)它們也能被破解官卡,所以你最終仍舊需要客服來(lái)幫助用戶恢復(fù)密碼。
- 正如你看到的秘血,由于你不能再僅僅給用戶發(fā)送郵件或者設(shè)置密保問(wèn)題味抖,雙因素認(rèn)證增加了大量的人工客服作業(yè)。這是很花錢的灰粮。
上述中的一部分是很根本的問(wèn)題仔涩,但其中絕大多數(shù)都已經(jīng)被大公司解決,這些公司將會(huì)免費(fèi)給你支付手機(jī)賬單和客服的工資粘舟。
就算你不打算利用這些大公司熔脂,也有創(chuàng)業(yè)公司能夠替你解決雙因素認(rèn)證難題里的一小部分。
7.不要強(qiáng)制用戶修改密碼
Troy的文章已經(jīng)很好的包含了這一問(wèn)題所以我就不重復(fù)了柑肴,只是在強(qiáng)調(diào)下這真的很重要霞揉。不要只是因?yàn)橐呀?jīng)使用了一長(zhǎng)段時(shí)間就要求用戶修改密碼。
- 有些用戶不會(huì)忍受這樣的處理晰骑,你會(huì)失去他們适秩。
- 有些用戶比你更聰明,會(huì)輪流修改使用幾個(gè)密碼,這意味著你得保存用戶最近使用過(guò)的幾個(gè)歷史密碼來(lái)阻止這樣的套路秽荞。但是我打賭你最初的實(shí)現(xiàn)不會(huì)想到做這些事情骤公。
- 這完全沒(méi)有提高安全性。
8.不要過(guò)期終止會(huì)話
又一個(gè)假的最佳實(shí)踐扬跋。它引誘你把會(huì)話cookie設(shè)置為過(guò)期阶捆。有些人之所以認(rèn)為這能夠提升安全性,完全是出于和過(guò)期用戶的密碼一樣的理由钦听。
- 黑客傾向于立即做出惡意行為洒试,所以過(guò)期處理并沒(méi)有什么用。
- 會(huì)話過(guò)期會(huì)潛移默化地讓用戶認(rèn)為意料之外的密碼輸入提示是正常的朴上,這讓他們極其容易被釣魚(yú)垒棋。
- 會(huì)話的隨機(jī)過(guò)期會(huì)導(dǎo)致產(chǎn)生大量耗費(fèi)開(kāi)發(fā)人員時(shí)間的bug。你網(wǎng)站的大部分都不會(huì)處理行為期間會(huì)話突然過(guò)期的情況余指,所以你就得回過(guò)頭去解決這些異常捕犬,如果你能意識(shí)到這個(gè)問(wèn)題的話。過(guò)期將會(huì)以用戶報(bào)告的各種難以追蹤的隨機(jī)異常的形式表現(xiàn)出來(lái)酵镜。
9.別忘了登出
沒(méi)有做好用戶登出操作碉碉,是不成熟的賬戶系統(tǒng)的顯著共同點(diǎn)。表面上聽(tīng)起來(lái)這功能很簡(jiǎn)單淮韭,但大部分顯而易見(jiàn)的實(shí)現(xiàn)方法都有缺陷垢粮。
- 簡(jiǎn)單地刪除會(huì)話cookie對(duì)于用戶來(lái)說(shuō)是很方便,但你則沒(méi)法從XSS中恢復(fù)靠粪。一旦發(fā)現(xiàn)了XSS蜡吧,你也許會(huì)希望讓那些可能被竊取的會(huì)話cookie失效,但如果登出操作剛剛“請(qǐng)求瀏覽器把cookie刪除”那么你就無(wú)能為力了占键。
- 給會(huì)話cookie加上時(shí)間戳并設(shè)置一個(gè)“上次登出時(shí)間”昔善,要求每個(gè)動(dòng)作都從賬戶數(shù)據(jù)庫(kù)檢查用戶會(huì)話是不是太舊了。這會(huì)拖慢速度畔乙,然后引誘開(kāi)發(fā)人員在調(diào)優(yōu)時(shí)刪除檢查處理(畢竟這樣做看上去沒(méi)什么危險(xiǎn)的)君仆。如果恰好移除了對(duì)黑客感興趣的終端的檢查,你就又回到了第一點(diǎn)提到的問(wèn)題牲距。另外返咱,還導(dǎo)致從瀏覽器或設(shè)備的登出會(huì)使得用戶從所有這些地方都登出,這并不是期待的行為牍鞠。
正確的做法是在內(nèi)存緩存中記錄失效的會(huì)話cookie的列表咖摹。但對(duì)于大多數(shù)公司來(lái)說(shuō),有一個(gè)成本更低而又夠好的方法:讓用戶的登出鏈接只用來(lái)清除會(huì)話cookie难述,不再做其它事情萤晴,然后讓會(huì)話cookie失效并自動(dòng)默默地每5分鐘左右進(jìn)行替換吐句。替換一個(gè)過(guò)期會(huì)話cookie的行為會(huì)去數(shù)據(jù)庫(kù)查詢管理員是否強(qiáng)制做了登出。如果用戶提交了一個(gè)過(guò)期cookie店读,就會(huì)被要求重新登錄蕴侧。這里能夠看出,很少會(huì)有cookie的清除動(dòng)作是發(fā)生在被盜之后两入。
10.把賬戶相關(guān)的email跟營(yíng)銷郵件分開(kāi)
發(fā)送密碼恢復(fù)和注冊(cè)驗(yàn)證鏈接的顯而易見(jiàn)的方法是使用你的企業(yè)郵件服務(wù)器。不幸的是敲才,你公司里總有幾個(gè)賤人試圖通過(guò)發(fā)送用戶不想看到的推銷郵件來(lái)跟用戶“發(fā)生關(guān)系”裹纳。
即使用戶在注冊(cè)時(shí)同意了接收這些玩意兒,大部分人還是會(huì)感到厭煩紧武,有些還會(huì)直接把它們報(bào)告為垃圾郵件剃氧。對(duì)于那些發(fā)現(xiàn)多點(diǎn)幾次“報(bào)告垃圾郵件”之后就不會(huì)再見(jiàn)到這些郵件的聰明的用戶來(lái)說(shuō),這是個(gè)很有用的解決辦法阻星,而不需要浪費(fèi)腦力尋找那個(gè)小小的用白底淺灰6pt的字體寫(xiě)的“取消訂閱”朋鞍,或者…噢我的天…編寫(xiě)email過(guò)濾規(guī)則。
很不幸妥箕,這個(gè)完全正常的用戶行為會(huì)降低你的郵件域名的受信度滥酥。來(lái)自你的賬戶系統(tǒng)的郵件開(kāi)始被放到用戶的垃圾郵件文件夾里。這就是為什么我們經(jīng)称璐保看到注冊(cè)或者密碼恢復(fù)流程提示我們?nèi)z查垃圾郵件文件夾坎吻。
解決該問(wèn)題的一個(gè)辦法是購(gòu)買一個(gè)獨(dú)立的頂級(jí)郵件域名來(lái)發(fā)送賬戶相關(guān)的郵件,并確保配置了DKIM宇葱。但接著瘦真,一些用戶會(huì)注意到郵件域名的不同,并把你的郵件報(bào)告為釣魚(yú)郵件黍瞧。最好的解決方式是從一個(gè)不同的DKIM域發(fā)送你的市場(chǎng)營(yíng)銷郵件诸尽,但這樣很有可能會(huì)涉及到跟你的產(chǎn)品團(tuán)隊(duì)的爭(zhēng)斗。同樣的印颤,當(dāng)你決定自己做的那一刻你已經(jīng)接受了這樣的痛苦您机,還記得吧?
11.好好保護(hù)你的密碼數(shù)據(jù)庫(kù)
如果你采用了密碼膀哲,你就會(huì)有一個(gè)攻擊者想要(并經(jīng)常要到)的數(shù)據(jù)庫(kù)往产。他們才不care你的公司,他們只是想要在更有價(jià)值的目標(biāo)上嘗試這些密碼某宪。但密碼泄露依然是很尷尬的事情仿村,并引起大額的處罰,盡管你的用戶受到的直接影響很小兴喂。一個(gè)OAuth令牌的數(shù)據(jù)庫(kù)的價(jià)值對(duì)于攻擊者來(lái)說(shuō)就要低很多蔼囊,因此你就不太可能會(huì)成為攻擊目標(biāo)焚志。
結(jié)論
對(duì)于賬戶系統(tǒng)我能寫(xiě)的還有很多。保護(hù)你的網(wǎng)站免于針對(duì)賬戶系統(tǒng)的惡意行為完全可以寫(xiě)一本書(shū)畏鼓。我寫(xiě)不出這本書(shū)酱酬,但如果你感興趣的話可以看我在2012年的一個(gè)演講視頻。
公平地說(shuō)云矫,這是一個(gè)帶有欺騙性的龐大任務(wù)膳沽。這就是為什么我一直建議你咬咬牙吧賬戶管理功能外包給大公司去做。搗鼓圖片驗(yàn)證碼不是你的核心業(yè)務(wù)让禀;為“用戶登出”編寫(xiě)涉及文檔不是你的核心業(yè)務(wù)挑社;分析為什么你失去了那些忘記密碼的用戶的喜愛(ài)也不是你的核心業(yè)務(wù);分析為什么發(fā)送到秘魯?shù)亩绦挪豢煽客瑯硬皇悄愕暮诵臉I(yè)務(wù)巡揍。你在這些事情上花的每一塊錢痛阻,都被你那些使用“通過(guò)…登錄”的競(jìng)爭(zhēng)對(duì)手花在核心業(yè)務(wù)上了。
所以腮敌,扔掉你的密碼數(shù)據(jù)庫(kù)阱当,別再回頭。