人機識別策略是區(qū)分正常用戶與惡意攻擊者的重要保障機制。在沒有人機識別的情況下,攻擊者很容易就能對密碼進行暴力破解或者用一個通用密碼對用戶進行暴力破解,導(dǎo)致在許多場景中不得不降低用戶體驗。增加人機識別策略,可防止惡意攻擊者暴力破解數(shù)據(jù),并減輕服務(wù)器的壓力,例如更好地支持登錄注冊、密碼找回、支付、轉(zhuǎn)賬、論壇回帖,有效防范強刷頁面、刷票等。在項目中常用的人機識別方式有圖片驗證碼、短信驗證、語音驗證、滑塊驗證等。
1、圖片驗證碼
圖片驗證碼的形態(tài)多樣,主要有數(shù)字、字母、中文組合、計算題等,驗證碼生成算法以及程序?qū)崿F(xiàn)流程上都有可能帶來問題,容易被攻擊者突破。
使用圖片驗證碼要注意以下問題。
(1)驗證碼的字符范圍要盡可能大,盡量使用字母、數(shù)字、漢字、符號組合的字符集,這種字符集比單純?yōu)閿?shù)字的字符集效果要好。
(2)盡量讓字符進行變形、扭曲,或使用干擾性強的圖案,這樣能有效增加驗證碼的識別難度,但這對人眼識別是基本無障礙的。
(3)防止暴力猜解,要對生成的每一個驗證碼都設(shè)置有效期,驗證碼驗證失敗一次后一定要設(shè)置為失效,并重新生成新的驗證碼。
(4)防止生成的驗證碼返回到響應(yīng)中。比如研發(fā)人員忘記注釋掉調(diào)試信息,導(dǎo)致驗證碼可能出現(xiàn)在響應(yīng)包中的Cookie、URL、頁面注釋中,甚至驗證碼在展示的時候直接就是文本方式,這樣就完全失去了使用驗證碼的價值。
(5)推薦使用CAPTCHA項目提供的人機識別驗證碼。CAPTCHA提供一個PHP的驗證碼生成類cool-php-captcha,可以通過GitHub下載得到。如圖1所示為CAPTCHA樣式示例。
圖1 CAPTCHA樣式示例
2、短信驗證碼
短信驗證碼的安全使用通常會遇到以下問題。
(1)短信炸彈。如果沒有進行短信發(fā)送頻率限制,容易被利用來發(fā)送短信炸彈,騷擾用戶。
(2)經(jīng)濟損失。限制不嚴格容易造成短信浪費。由于每條短信都需要給運營商繳納費用,因此會造成沒必要的經(jīng)濟損失。
(3)短信內(nèi)容注入。限制不嚴格容易被注入廣告內(nèi)容發(fā)送給用戶,不但會對用戶產(chǎn)生騷擾,而且會損失企業(yè)的信譽。
安全使用短信驗證碼的解決方案如下。
(1)使用短信驗證碼時,在發(fā)送短信驗證碼時一定要先進行人機校驗,如校驗圖形驗證碼。
(2)限制單個手機號某個時段內(nèi)最多接收的短信數(shù)量,如根據(jù)業(yè)務(wù)需要每小時或每天最多發(fā)送五條,每分鐘最多發(fā)送一條。
(3)根據(jù)業(yè)務(wù)需求限制短信發(fā)送的時間段,如每天早9點以前、晚8點以后禁止發(fā)送短信。
(4)防止用戶直接或間接地自定義短信內(nèi)容,防止被用于發(fā)送廣告或非法內(nèi)容。
3、語音驗證碼
通過播放語音的方式將驗證碼告訴用戶,用戶再將驗證碼填寫至頁面中,提交給系統(tǒng)審核。如果用戶對圖形形式的驗證碼識別有困難,建議使用語音形式的驗證碼。語音認證主要有以下三種形式。
(1)在認證頁面進行播放。通過Web頁面中的播放器將驗證碼以語音方式播放出來。
(2)用戶主動呼叫系統(tǒng)的預(yù)留電話獲取驗證碼。這種方式良好地解決了操作終端對音頻設(shè)備的依賴,且更加私密,安全性高。
(3)由用戶觸發(fā),系統(tǒng)通過撥打用戶的綁定電話接聽驗證碼。
使用語音驗證的需要注意以下事項。
(1)使用語音驗證碼時,一定要先進行圖形驗證碼人機校驗。
(2)對驗證碼要進行有效期的設(shè)置,在認證失敗后將驗證碼進行失效處理,防止暴力猜解。
(3)防止頻繁請求,要限制單個用戶單個手機號在某個時間段的認證次數(shù),失敗一定次數(shù)后應(yīng)該拒絕其認證請求,避免騷擾用戶和造成資源浪費。
4、其他驗證方式
除了常見的圖片、短信、語音驗證碼外,根據(jù)自己業(yè)務(wù)情況還可以選擇其他方式的人機驗證,如圖片滑塊拖拽驗證、文字按順序選擇在圖片上點擊、好友確認等。
責編AJX
-
人機交互
+關(guān)注
關(guān)注
12文章
1210瀏覽量
55435 -
語音識別
+關(guān)注
關(guān)注
38文章
1742瀏覽量
112721 -
驗證碼
+關(guān)注
關(guān)注
2文章
20瀏覽量
4722
發(fā)布評論請先 登錄
相關(guān)推薦
評論