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