成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

當(dāng)我們談?wù)擈?yàn)證碼時(shí),我們到底在談?wù)撌裁矗?

妤鋒シ / 3026人閱讀

摘要:在次失敗后,第四次請(qǐng)求,就返回錯(cuò)誤文案驗(yàn)證碼連續(xù)錯(cuò)誤三次,請(qǐng)重新獲取短信驗(yàn)證碼還有一個(gè)需要思考的維度。一般來說,短信驗(yàn)證碼會(huì)有分鐘的有效期。

前言:

現(xiàn)如今登錄用手機(jī)驗(yàn)證碼登錄是越來越常見了。雖然會(huì)增加成本,不過對(duì)用戶體驗(yàn)的提升還是很有幫助的。那么,當(dāng)產(chǎn)品經(jīng)理對(duì)開發(fā)說,來按照這個(gè)原型給我搞個(gè)短信驗(yàn)證碼登錄的時(shí)候。我們作為研發(fā),應(yīng)該想些什么?

短信登錄要做的事情

這里的圖只展示了一次成功的流程。還有很多細(xì)節(jié)值得展開講下。除了短信驗(yàn)證的流程以外,登錄的安全性也必須要考慮到。尤其是比較重要的后臺(tái)項(xiàng)目。
下面我就想圖中17個(gè)步驟拆開分析

請(qǐng)求獲取驗(yàn)證碼(1~4)

1~4步主要的點(diǎn)有兩個(gè)。

前端對(duì)手機(jī)號(hào)的格式驗(yàn)證,按鈕多次點(diǎn)擊的驗(yàn)證

后端對(duì)請(qǐng)求驗(yàn)證碼的頻率的限制

驗(yàn)證規(guī)則可以寬松一點(diǎn)。雖然前端的驗(yàn)證并不可靠,但是不代表前端的驗(yàn)證沒有用。同時(shí),當(dāng)點(diǎn)擊了獲取驗(yàn)證碼后需要將驗(yàn)證碼的按鈕禁用,防止多次點(diǎn)擊
后端的部分則需要判斷當(dāng)前ip,當(dāng)前手機(jī)號(hào)是否是重復(fù)請(qǐng)求驗(yàn)證碼。這里就需要引入重復(fù)請(qǐng)求驗(yàn)證碼的規(guī)則。一般的規(guī)則是60秒內(nèi)可以再次請(qǐng)求。這個(gè)時(shí)間可以通過記錄一條鍵名為請(qǐng)求手機(jī)號(hào)的一條緩存,過期時(shí)間為60秒。如果可以拿到值,則說明還沒有到60秒再次請(qǐng)求。

驗(yàn)證合法性(5~8)

5~8步主要是驗(yàn)證手機(jī)號(hào)背后的用戶的合法性
首先手機(jī)號(hào)的格式是必須要判斷的,雖然前端有判斷。但是后端的驗(yàn)證才是可靠的驗(yàn)證。后面就是通過手機(jī)號(hào)查庫。查詢的邏輯主要為

注冊(cè)用戶中是否有這個(gè)手機(jī)號(hào)

該用戶狀態(tài)是否為禁用

該用戶權(quán)限是否可以登錄當(dāng)前業(yè)務(wù)

如果條件滿足就可以進(jìn)行下一步了

制作/存儲(chǔ)驗(yàn)證碼(9~10)

制作驗(yàn)證碼,就必須考慮兩個(gè)問題,1是驗(yàn)證碼的長(zhǎng)度 2是驗(yàn)證碼的復(fù)雜度
對(duì)用戶最友好的當(dāng)然是純數(shù)字,驗(yàn)證碼越短越好。但是這樣對(duì)安全性就大打折扣。有沒有又對(duì)用戶友好,又安全的方案呢?
答案是有的。
首先我們假定使用4位數(shù)字的方案。如果不設(shè)置嘗試次數(shù)的限制的話,黑客使用多線程工具,在短時(shí)間內(nèi)進(jìn)行暴力枚舉最多1萬次就能窮舉出所有的可能,而且運(yùn)氣也不一定會(huì)這么差。有可能在3000次的時(shí)候就試出來了。
那么我們的解決方案就是。同一個(gè)手機(jī)號(hào),驗(yàn)證三次。就將驗(yàn)證碼失效。在3次失敗后,第四次請(qǐng)求,就返回錯(cuò)誤文案 “驗(yàn)證碼連續(xù)錯(cuò)誤三次,請(qǐng)重新獲取短信驗(yàn)證碼”
還有一個(gè)需要思考的維度。那就是短信驗(yàn)證碼的有效期。一般來說,短信驗(yàn)證碼會(huì)有5分鐘的有效期。這里就會(huì)有一個(gè)交叉的問題。比如一個(gè)用戶獲取到了一個(gè)驗(yàn)證碼而不去驗(yàn)證,過了60秒又去獲取一次。他就會(huì)有兩個(gè)有效的驗(yàn)證碼。這樣明顯是不合理的,那么我就需要在獲取第二次驗(yàn)證碼的時(shí)候廢棄調(diào)第一個(gè)驗(yàn)證碼。使用緩存存儲(chǔ)驗(yàn)證碼的時(shí)候,直接set就可以將上一個(gè)驗(yàn)證碼給覆蓋掉,還可以重新設(shè)置5分鐘的有效期。

最后還有一個(gè)容易被忽略的問題。那就是短信防刷,我們之前的設(shè)置,都只是針對(duì)于一個(gè)手機(jī)號(hào)的防刷。還有一種刷短信是不停的更換手機(jī)號(hào)來刷的那種。解決方案可以通過,ip,ua,referer,header等參數(shù)來判斷是否是同一個(gè)客戶端發(fā)起的請(qǐng)求。如果是同一個(gè)客戶端在一個(gè)小時(shí)內(nèi)請(qǐng)求超過了5次。就必須輸入一個(gè)圖形驗(yàn)證碼。圖形驗(yàn)證碼的實(shí)現(xiàn)就不用多說了。太多可以直接用的包。這樣的話可以最大限度的防止別人對(duì)我們的系統(tǒng)進(jìn)行攻擊,同時(shí)也保障了體驗(yàn)不打折扣

發(fā)送驗(yàn)證碼給用戶(11~12)

這步就比較簡(jiǎn)單了。只需要按照SMS的接口文檔,傳入手機(jī)號(hào),短信模版,驗(yàn)證碼就可以發(fā)送了??梢钥紤]增加一個(gè)日志記入數(shù)據(jù)庫,用作數(shù)據(jù)分析。

驗(yàn)證登錄,登錄成功(15~17)

驗(yàn)證登錄這步主要是要完成之前提到的。驗(yàn)證3失敗3次廢棄驗(yàn)證碼(無論是否匹配),驗(yàn)證通過后也要廢棄驗(yàn)該驗(yàn)證碼。同時(shí)驗(yàn)證碼通過之后還是需要再次驗(yàn)證用戶的合法性。防止比較極端的情況,比如請(qǐng)求驗(yàn)證碼的時(shí)候用戶是合法的,但是在5分鐘之內(nèi)用戶被禁用了。這樣的話還是不能讓他登錄。
登錄成功的話就看自己的架構(gòu)設(shè)計(jì)了??梢允莟oken令牌也可以是session會(huì)話。建立會(huì)話之后,就算完成了一次完整的短信驗(yàn)證碼登錄了!~

總結(jié)

總結(jié)完成之后,就可以按照要求進(jìn)行開發(fā)了。雖然是一個(gè)簡(jiǎn)單的短信驗(yàn)證碼,但是我發(fā)現(xiàn)市面很多的項(xiàng)目,這一塊都沒有做好(別問我,我怎么知道 哈哈哈)我們作為研發(fā)人員,一定要盡可能的考慮周全,以免出現(xiàn)線上事故。

微信公眾號(hào):RichardTalked

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/62114.html

相關(guān)文章

  • 我們一直談?wù)?/em>“寫代碼”,但你會(huì)“讀代碼”嗎?

    摘要:只有能看懂代碼,你才能快速準(zhǔn)確地定位代碼中的問題。要寫出很的代碼,少不了閱讀優(yōu)秀的源碼。我們的論壇和答疑群里,有一些同學(xué)會(huì)查看并解答其他人的代碼問題。實(shí)際上,我覺得就是沒看懂你只是看懂了每一行代碼的意思,但并沒有理解整個(gè)代碼的設(shè)計(jì)。 編程,又被稱作 寫代碼 。這個(gè)說法有可能會(huì)帶來一點(diǎn)點(diǎn)誤解,讓人覺得如何寫是學(xué)習(xí)編程要解決的主要問題。但事實(shí)并非如此。盡管最終代碼要在鍵盤上敲出來,但這個(gè)過...

    2i18ns 評(píng)論0 收藏0
  • 當(dāng)我們談?wù)?/em>前端加密時(shí),我們談些什么

    摘要:所以我們今天只談前端加密,一個(gè)部分人認(rèn)為沒有意義的工作。在中,認(rèn)證過程使用了非對(duì)稱加密算法,非認(rèn)證過程中使用了對(duì)稱加密算法。非對(duì)稱加密上文中我們討論了前端的哈希加密以及應(yīng)用的場(chǎng)景。 showImg(https://segmentfault.com/img/bVAhTC); 當(dāng)然在談安全。 前端安全是Web安全的一部分,常見的安全問題會(huì)有XSS、CSRF、SQL注入等,然而這些已經(jīng)在程師...

    wizChen 評(píng)論0 收藏0
  • 2017-07-14 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選技術(shù)周刊譯文四種使用提升應(yīng)用的方式當(dāng)我們談?wù)撉岸思軜?gòu)時(shí),我們到底在談?wù)撌裁词堑模瑏砹伺c之爭(zhēng)發(fā)布中文譯是的,來了掘金第期實(shí)踐總結(jié)個(gè)必備的裝逼技巧掘金年學(xué)習(xí)最好的書籍圓形隨機(jī)分布種事件驅(qū)動(dòng)的架構(gòu)試用知識(shí)總結(jié)個(gè)人文章 2017-07-14 前端日?qǐng)?bào) 精選 SegmentFault 技術(shù)周刊【譯文】四種使用webpack提升Vue應(yīng)用的方式當(dāng)我們談?wù)撉岸思軜?gòu)時(shí),我們到底在談?wù)撌裁矗?..

    lewinlee 評(píng)論0 收藏0
  • 當(dāng)我們談?wù)?/em>Virtual DOM時(shí),我們什么——etch源碼解讀

    摘要:接下來我們深入函數(shù),看看它干了什么。在我們寫的代碼里,我們會(huì)手動(dòng)將元素掛載到樹上。到這里,我們已經(jīng)完成了元素掛載的全過程,接下來我們看一看更新的時(shí)候會(huì)發(fā)生什么。這部分應(yīng)該是負(fù)責(zé)的,我們要在組件的方法中調(diào)用。 etch簡(jiǎn)介 首先我們有必要介紹一下etch。 etch是atom團(tuán)隊(duì)下的開源項(xiàng)目,是一套非常簡(jiǎn)潔然而功能十分完善的virtualDOM機(jī)制。我在偶然的情況下接觸到了這個(gè)開源項(xiàng)...

    RayKr 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<