在短信驗證碼的產品設計過程中有哪些事項是需要注意的呢?
短信驗證碼如今的應用之廣無需贅述,各大銀行的網上銀行、各種手機APP、各種類型的網站,都需要藉助短信驗證碼完成相關業務。 在使用過程中,由於產品設計過程中防範意識薄弱,經常會出現短信被惡意攻擊的事件,引起一些不必要的損失。 下面我們就一起了解下短信驗證碼產品設計過程中的注意事項。
短信惡意攻擊的目的是什麼?
目前市面上的短信惡意攻擊無非是有兩種目的:
第一是以攻擊某個特定的手機號為目的,黑客利用互聯網中多個未經防護的短信發送接口,循環調用接口向該手機號發送短信,使手機號的擁有者不堪其擾。
第二是以惡意刷取目標網站短信驗證碼費用為目的,黑客發現某個未加防護的短信發送接口後,會按照某個手機號碼列表,循環發送短信驗證碼,攻擊期間黑客會不斷變換ip 地址,可刷取數以萬計甚至更高的短信費用。 被攻擊的公司在損失費用的同時,也必定會收到用戶的投訴,公司形像也會受損。
容易被攻擊的場景
最常被攻擊的場景是用戶註冊頁面,或者是手機短信驗證碼快捷登錄頁面、網絡在線投票等頁面。 此類場景下的發送短信驗證碼的接口,往往未對調用方進行相關的身份驗證。
幾種防攻擊策略使用過程中的思考
幾種防攻擊策略都能在一定程度上起作用,但是會對用戶體驗產生不同的影響,在實際使用過程中,需要考慮到實際情況,組合使用以下策略。
設置短信發送時間間隔
設置同一個號碼重複發送的時間間隔,一般設置為60-120秒。 該手段可以在一定程度上防止短信接口被惡意攻擊,且對用戶體驗沒有什麼傷害。 但是不能防止黑客更換手機號進行攻擊,防護等級較低。
手機號獲取短信驗證碼次數限制
限制某個特定手機號某個特定時間段內獲取短信驗證碼次數的上限。 採用這種策略時在產品設計過程中,有幾點值得認真思考。
- 謹慎定義上限值。 根據業務真實的情況,甚至需要考慮到將來業務的發展定一個合適的上限值,避免因用戶無法收到短信驗證碼而帶來的投訴。
- 謹慎定義鎖定時間段。 可以是24小時,可以是12小時、6小時。 需要根據業務情況進行定義。
- 考慮用戶手機無法獲取到短信驗證碼的後續方案。 如果真的有用戶無意間觸發了上限值,但是他真的需要使用某項業務,有可能打客服電話。 此時可以讓用戶等待,渡過鎖定期後自行解鎖。 也可以在客服操作的後台,增加手動解鎖功能,這裡就不展開說了。
IP 限制
設置單個IP地址某個時間段內最大的發送量。 該手段可很好的預防單一IP地址的攻擊,但是也有兩個很明顯的缺點:
- 對於經常變更IP地址進行攻擊的黑客,該手段沒有很好的效果。
- IP的限制經常會造成誤傷。 如在一些使用統一無線網的場所,很多用戶連接著同一個無線網,這個IP地址就容易很快達到上限,從而造成連接該無線網的用戶都無法正常的收到驗證碼。
增加圖形驗證碼
在發送短信驗證碼之前,必須通過通過圖形驗證碼的校驗。 這種手段可有效地防止各種攻擊,因此也是目前非常普遍的短信防攻擊機制。 但是在使用過程中涉及到用戶體驗問題,不能簡單粗暴地套用這一策略。 以下幾個點值得仔細斟酌:
- 能不能每次發送短信驗證碼的時候,都先輸入圖形驗證碼? 我的意見是最好不要,一般來說這樣做會極大地影響用戶體驗,雖然是安全了,但是用戶用著不爽了。
- 可以給一個安全範圍。 不妨結合手機號限制、IP限制來考慮,比如同一個手機號當天第3次獲取圖形驗證碼的時候,出現圖形驗證碼;比如同一個IP地址當天獲取驗證碼次數超過100次後,出現圖形驗證 碼。
- 圖形驗證碼的具體選用類型。 有文字(字母數字)驗證碼、滑動驗證碼、選字驗證碼等,根據具體的業務場景來選取。
改變發送驗證碼的流程設定
此類策略屬於開腦洞式的、跳出常規思維的解決問題的辦法,舉兩個例子:
- 註冊的場景下,可以先讓用戶輸入手機號,接著設置密碼,密碼設置成功之後再進行短信驗證碼的發送。 這樣就從流程上增大了黑客的攻擊成本,可大大避免非攻擊的概率。
- 像微信、QQ以及一些其他應用那樣,讓用戶先發送指定短信給企業,以此來驗證用戶是否掌握著這個手機,企業驗證通過後再進行接下來的短信驗證碼發送。 這真是一個絕妙的主意,從根本上杜絕了黑客攻擊的可能。 但是一般的應用需要謹慎使用這個功能,考慮自己的產品有沒有必要做這種功能的開發,是不是普通的策略就夠用了。 而且面對這種用戶體驗不是那麼好的方式,自己的產品是否有足夠的信心相信用戶一定會接受這種引導。
以上是對於幾種防攻擊策略的思考,在具體的產品設計過程中,可以綜合使用,在產品安全和優秀的用戶體驗之間尋找一個極佳的平衡。
本文由 @最初的夢想 原創發佈於人人都是產品經理。 未經許可,禁止轉載
題圖來自 pexels ,基於 CC0 協議