產(chǎn)品安全:短信驗(yàn)證碼的防攻擊策略

5 評論 15710 瀏覽 134 收藏 8 分鐘

在短信驗(yàn)證碼的產(chǎn)品設(shè)計(jì)過程中有哪些事項(xiàng)是需要注意的呢?

短信驗(yàn)證碼如今的應(yīng)用之廣無需贅述,各大銀行的網(wǎng)上銀行、各種手機(jī)APP、各種類型的網(wǎng)站,都需要借助短信驗(yàn)證碼完成相關(guān)業(yè)務(wù)。在使用過程中,由于產(chǎn)品設(shè)計(jì)過程中防范意識薄弱,經(jīng)常會出現(xiàn)短信被惡意攻擊的事件,引起一些不必要的損失。下面我們就一起了解下短信驗(yàn)證碼產(chǎn)品設(shè)計(jì)過程中的注意事項(xiàng)。

短信惡意攻擊的目的是什么?

目前市面上的短信惡意攻擊無非是有兩種目的:

第一是以攻擊某個特定的手機(jī)號為目的,黑客利用互聯(lián)網(wǎng)中多個未經(jīng)防護(hù)的短信發(fā)送接口,循環(huán)調(diào)用接口向該手機(jī)號發(fā)送短信,使手機(jī)號的擁有者不堪其擾。

第二是以惡意刷取目標(biāo)網(wǎng)站短信驗(yàn)證碼費(fèi)用為目的,黑客發(fā)現(xiàn)某個未加防護(hù)的短信發(fā)送接口后,會按照某個手機(jī)號碼列表,循環(huán)發(fā)送短信驗(yàn)證碼,攻擊期間黑客會不斷變換ip地址,可刷取數(shù)以萬計(jì)甚至更高的短信費(fèi)用。被攻擊的公司在損失費(fèi)用的同時,也必定會收到用戶的投訴,公司形象也會受損。

容易被攻擊的場景

最常被攻擊的場景是用戶注冊頁面,或者是手機(jī)短信驗(yàn)證碼快捷登錄頁面、網(wǎng)絡(luò)在線投票等頁面。此類場景下的發(fā)送短信驗(yàn)證碼的接口,往往未對調(diào)用方進(jìn)行相關(guān)的身份驗(yàn)證。

幾種防攻擊策略使用過程中的思考

幾種防攻擊策略都能在一定程度上起作用,但是會對用戶體驗(yàn)產(chǎn)生不同的影響,在實(shí)際使用過程中,需要考慮到實(shí)際情況,組合使用以下策略。

設(shè)置短信發(fā)送時間間隔

設(shè)置同一個號碼重復(fù)發(fā)送的時間間隔,一般設(shè)置為60-120秒。該手段可以在一定程度上防止短信接口被惡意攻擊,且對用戶體驗(yàn)沒有什么傷害。但是不能防止黑客更換手機(jī)號進(jìn)行攻擊,防護(hù)等級較低。

手機(jī)號獲取短信驗(yàn)證碼次數(shù)限制

限制某個特定手機(jī)號某個特定時間段內(nèi)獲取短信驗(yàn)證碼次數(shù)的上限。采用這種策略時在產(chǎn)品設(shè)計(jì)過程中,有幾點(diǎn)值得認(rèn)真思考。

  1. 謹(jǐn)慎定義上限值。根據(jù)業(yè)務(wù)真實(shí)的情況,甚至需要考慮到將來業(yè)務(wù)的發(fā)展定一個合適的上限值,避免因用戶無法收到短信驗(yàn)證碼而帶來的投訴。
  2. 謹(jǐn)慎定義鎖定時間段??梢允?4小時,可以是12小時、6小時。需要根據(jù)業(yè)務(wù)情況進(jìn)行定義。
  3. 考慮用戶手機(jī)無法獲取到短信驗(yàn)證碼的后續(xù)方案。如果真的有用戶無意間觸發(fā)了上限值,但是他真的需要使用某項(xiàng)業(yè)務(wù),有可能打客服電話。此時可以讓用戶等待,渡過鎖定期后自行解鎖。也可以在客服操作的后臺,增加手動解鎖功能,這里就不展開說了。

IP限制

設(shè)置單個IP地址某個時間段內(nèi)最大的發(fā)送量。該手段可很好的預(yù)防單一IP地址的攻擊,但是也有兩個很明顯的缺點(diǎn):

  1. 對于經(jīng)常變更IP地址進(jìn)行攻擊的黑客,該手段沒有很好的效果。
  2. IP的限制經(jīng)常會造成誤傷。如在一些使用統(tǒng)一無線網(wǎng)的場所,很多用戶連接著同一個無線網(wǎng),這個IP地址就容易很快達(dá)到上限,從而造成連接該無線網(wǎng)的用戶都無法正常的收到驗(yàn)證碼。

增加圖形驗(yàn)證碼

在發(fā)送短信驗(yàn)證碼之前,必須通過通過圖形驗(yàn)證碼的校驗(yàn)。這種手段可有效地防止各種攻擊,因此也是目前非常普遍的短信防攻擊機(jī)制。但是在使用過程中涉及到用戶體驗(yàn)問題,不能簡單粗暴地套用這一策略。以下幾個點(diǎn)值得仔細(xì)斟酌:

  1. 能不能每次發(fā)送短信驗(yàn)證碼的時候,都先輸入圖形驗(yàn)證碼?我的意見是最好不要,一般來說這樣做會極大地影響用戶體驗(yàn),雖然是安全了,但是用戶用著不爽了。
  2. 可以給一個安全范圍。不妨結(jié)合手機(jī)號限制、IP限制來考慮,比如同一個手機(jī)號當(dāng)天第3次獲取圖形驗(yàn)證碼的時候,出現(xiàn)圖形驗(yàn)證碼;比如同一個IP地址當(dāng)天獲取驗(yàn)證碼次數(shù)超過100次后,出現(xiàn)圖形驗(yàn)證碼。
  3. 圖形驗(yàn)證碼的具體選用類型。有文字(字母數(shù)字)驗(yàn)證碼、滑動驗(yàn)證碼、選字驗(yàn)證碼等,根據(jù)具體的業(yè)務(wù)場景來選取。

改變發(fā)送驗(yàn)證碼的流程設(shè)定

此類策略屬于開腦洞式的、跳出常規(guī)思維的解決問題的辦法,舉兩個例子:

  1. 注冊的場景下,可以先讓用戶輸入手機(jī)號,接著設(shè)置密碼,密碼設(shè)置成功之后再進(jìn)行短信驗(yàn)證碼的發(fā)送。這樣就從流程上增大了黑客的攻擊成本,可大大避免非攻擊的概率。
  2. 像微信、QQ以及一些其他應(yīng)用那樣,讓用戶先發(fā)送指定短信給企業(yè),以此來驗(yàn)證用戶是否掌握著這個手機(jī),企業(yè)驗(yàn)證通過后再進(jìn)行接下來的短信驗(yàn)證碼發(fā)送。這真是一個絕妙的主意,從根本上杜絕了黑客攻擊的可能。但是一般的應(yīng)用需要謹(jǐn)慎使用這個功能,考慮自己的產(chǎn)品有沒有必要做這種功能的開發(fā),是不是普通的策略就夠用了。而且面對這種用戶體驗(yàn)不是那么好的方式,自己的產(chǎn)品是否有足夠的信心相信用戶一定會接受這種引導(dǎo)。

以上是對于幾種防攻擊策略的思考,在具體的產(chǎn)品設(shè)計(jì)過程中,可以綜合使用,在產(chǎn)品安全和優(yōu)秀的用戶體驗(yàn)之間尋找一個極佳的平衡。

 

本文由 @最初的夢想 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自 pexels ,基于 CC0 協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. “比如同一個手機(jī)號當(dāng)天第3次獲取圖形驗(yàn)證碼的時候,出現(xiàn)圖形驗(yàn)證碼”
    應(yīng)該是:
    “比如同一個手機(jī)號當(dāng)天第3次獲取驗(yàn)證碼的時候,出現(xiàn)圖形驗(yàn)證碼”

    來自廣東 回復(fù)
    1. 優(yōu)秀 ??

      來自廣東 回復(fù)
  2. 稍微的補(bǔ)充一點(diǎn)細(xì)節(jié),供交流:
    – 設(shè)置獲取驗(yàn)證碼的時間周期
    – 單位時間內(nèi)(一般是一個自然日)最多獲取幾個驗(yàn)證碼
    – 超過獲取的數(shù)量閾值后,啟動的限制策略:限制手機(jī)號、IP,或者兩者都限制
    – 附加:驗(yàn)證碼輸入錯誤幾次后,強(qiáng)制獲取新驗(yàn)證碼(平臺安全措施非驗(yàn)證碼安全策略)

    注冊初期為避免因?yàn)榘踩呗远鴮?dǎo)致用戶的流失,建議還是上第三方登錄(登陸后是否直接驗(yàn)證手機(jī)號看平臺)

    Web端的一些補(bǔ)充:
    – Web端和APP 的驗(yàn)證碼策略是否共用,還是并行,互不干擾?
    – Web端驗(yàn)證碼輸入錯誤后幾次,啟用圖形驗(yàn)證碼并強(qiáng)制重新獲?。ㄟ@個區(qū)別于先驗(yàn)證圖形驗(yàn)證碼后獲取手機(jī)驗(yàn)證碼)

    來自上海 回復(fù)
    1. 和文章有重復(fù)的點(diǎn)

      來自福建 回復(fù)
  3. 還可以增加友情話的驗(yàn)證碼圖形驗(yàn)證,比如:拼接圖片成功后有一個文案提示,滿足用戶小小的虛榮心
    cookie的時間設(shè)置,section的時間設(shè)置

    來自四川 回復(fù)