本文屬於科普性質,以對話的形式進行,不講深奧的道理。
用戶密碼忘記了,登錄不了網站怎么辦?
給Ta手機發送一條短信驗證碼,用驗證碼來設定新密碼。
怎么知道用戶的手機號碼是多少?
用戶注冊的時候,強制要求填寫手機號。
用戶亂填一個手機號怎么辦?
通過短信來驗證。生成一個隨機數當作驗證碼通過短信發到填寫的手機號上,讓用戶把驗證碼填寫回來,如果填寫正確,證明手機號不是亂填的。
有時用戶收不到驗證碼短信,或者隔了幾分鍾才收到,不能讓用戶一直等。怎么辦?
讓用戶可以點個按鈕重新發送驗證碼。
用戶一直點重發,比如1秒點一下重發,浪費短信條數怎么辦?
前后端都限制,前端限制60秒后才能重發。后端限制同一個會話,或者同一個手機號60秒內不能發2條。
壞蛋用機器人每60秒“點”一次發送驗證碼,怎么辦?
發短信驗證碼之前要求用戶先填圖形驗證碼。填對了判為人,發送驗證碼短信,填錯了判為機器人,不發驗證碼短信。
人也會填錯圖形驗證碼,怎么辦?
如果填錯了,再換一張圖形驗證碼給Ta填。
短信驗證碼有時收不到,60秒后重發,又2條都收到了,不知道以哪條為准,怎么辦?
每條驗證碼產生個序號,序號也出現在短信中,並在界面提示用戶輸入哪個序號的驗證碼,這樣就知道以哪條為准啦。
有些圖形驗證碼太簡單,容易被機器人識別(破解),怎么辦?
換復雜的圖形驗證碼,比如 3維數字,漢字帶旋轉,動畫。
(抱歉,一時找不到3D驗證碼,哪位知道,感謝)
有些圖形驗證碼太復雜,人也很難識別怎么辦?
可以用拖動拼圖的方式。背后的原理是對滑塊的坐標與時間的關系來區分人與機器,具有對人友好、區分效果好等特點。
這么說圖形驗證碼是用來阻止壞蛋的,壞蛋畢竟是少數,但圖形驗證碼卻給占多數的好人(好蛋)帶來了麻煩。能不能改進一下,平常不要出現圖形驗證碼,只在發現壞蛋的情況下出現?
這個,有難度。那就一開始不出現圖形驗證碼。你接着問。
如何發現壞蛋?
發送了短信驗證碼,卻沒填對,或者點了重新發送,就識別為壞蛋,在重新發送時要求“填寫”圖形驗證碼。
如果是人真的沒有收到短信呢?
只能算Ta倒霉,被誤判壞蛋。不過也只是讓Ta“填寫”圖形驗證碼而已。
“在網絡上,你無法知道對方是不是一條狗。”,壞蛋不點重新發送,每次都偽裝成第一次發送,怎么辦?
通過cookie跟蹤Ta,就知道Ta就是剛才發送過一條短信驗證碼的家伙。
那就每次都先清掉cookie,再訪問網頁。要知道如果是機器人,訪問前清掉cookie輕而易舉。
監測客戶IP短時間內發送超過一定條數的短信,再想發送就要求填寫圖形驗證碼。
(以上對話,純屬虛構,就是為了讓你知道短信驗證碼和圖形碼證碼這些東東)