本文屬於科普性質,沒有什麼太深奧的道理。以對話的形式進行。前端
用戶密碼忘記了,登陸不了網站怎麼辦?後端
給Ta手機發送一條短信驗證碼,用驗證碼來設定新密碼。cookie
怎麼知道用戶的手機號碼是多少?網絡
用戶註冊的時候,強制要求填寫手機號。動畫
用戶亂填一個手機號怎麼辦?網站
經過短信來驗證。生成一個隨機數看成驗證碼經過短信發到填寫的手機號上,讓用戶把驗證碼填寫回來,若是填寫正確,證實手機號不是亂填的。blog
有時用戶收不到驗證碼短信,或者隔了幾分鐘才收到,不能讓用戶一直等。怎麼辦?驗證碼
讓用戶能夠點個按鈕從新發送驗證碼。登錄
用戶一直點重發,好比1秒點一下重發,浪費短信條數怎麼辦?原理
先後端都限制,前端限制60秒後才能重發。後端限制同一下會話,或者同一個手機號60秒內不能發2條。
壞蛋用機器人每60秒「點」一次發送驗證碼,怎麼辦?
發短信驗證碼以前要求用戶先填圖形驗證碼。填對了判爲人,發送驗證碼短信,填錯了判爲機器人,不發驗證碼短信。
人也會填錯圖形驗證碼,怎麼辦?
若是填錯了,再換一張圖形驗證碼給Ta填。
短信驗證碼有時收不到,60秒後重發,又2條都收到了,不知道以哪條爲準,怎麼辦?
每條驗證碼產生個序號,序號也出如今短信中,並在界面提示用戶輸入哪一個序號的驗證碼,這樣就知道以哪條爲準啦。
有些圖形驗證碼太簡單,容易被機器人識別(破解),怎麼辦?
換複雜的圖形驗證碼,好比 3維數字,漢字帶旋轉,動畫。
(抱歉,一時找不到3D驗證碼,哪位知道,感謝)
有些圖形驗證碼太複雜,人也很難識別怎麼辦?
能夠用拖動拼圖的方式。背後的原理是對滑塊的座標與時間的關係來區分人與機器,具備對人友好、區分效果好等特色。
這麼說圖形驗證碼是用來阻止壞蛋的,壞蛋畢竟是少數,但圖形驗證碼卻給佔多數的好人(好蛋)帶來了麻煩。能不能改進一下,日常不要出現圖形驗證碼,只在發現壞蛋的狀況下出現?
這個,有難度。那就一開始不出現圖形驗證碼。你接着問。
如何發現壞蛋?
發送了短信驗證碼,卻沒填對,或者點了從新發送,就識別爲壞蛋,在從新發送時要求「填寫」圖形驗證碼。
若是是人真的沒有收到短信呢?
只能算Ta倒黴,被誤判壞蛋。不過也只是讓Ta「填寫」圖形驗證碼而已。
「在網絡上,你沒法知道對方是否是一條狗。」,壞蛋不點從新發送,每次都假裝成第一次發送,怎麼辦?
經過cookie跟蹤Ta,就知道Ta就是剛纔發送過一條短信驗證碼的傢伙。
那就每次都先清掉cookie,再訪問網頁。要知道若是是機器人,訪問前清掉cookie垂手可得。
監測客戶IP短期內發送超過必定條數的短信,再想發送就要求填寫圖形驗證碼。
(以上對話,純屬虛構,就是爲了讓你知道短信驗證碼和圖形碼證碼這些東東的由來)
(如下內容涉及互聯網底層,暫不適合發表,懂的人請自行腦補,或者在評論區看看可否發出來)