前些日子我司的一款面向B端用戶的后臺系統(tǒng),出現(xiàn)賬號密碼被盜,異常發(fā)送了萬條廣告短信,幸虧發(fā)現(xiàn)及時沒導致白花花的銀子繼續(xù)浪費。
這個風波出現(xiàn)后,我立刻開啟了對平臺賬號密碼登錄這塊地毯式搜索,先來看看之前對賬號密碼安全這塊采取了什么安全防范策略,遺憾的時,一條都沒有,更可怕的是,密碼的傳輸還是明文(此時深深的吸了一口氣)。 此時,想說一句,看似簡單的登錄并不是你想象的那么簡單。
背景簡介
用戶賬號是系統(tǒng)根據(jù)手機號 + 密碼(默認手機號后6位)自動創(chuàng)建,無需用戶主動注冊。 無論從密碼的復雜度、還是其他方面,這樣的結構都是極易被破解的。
若需要對賬號安全性做相關策略的思路,需要先梳理出賬號密碼可能存在怎么樣的異常操作行為,針對各種情況做針對性的安全策略。
安全防范策略
情景1:密碼過于簡單,可能被嘗試多次就被破解的場景
策略1:增強安全密碼強度,增加密碼復雜度
? ?你可對密碼的組成設定以下規(guī)則:
? ? a)、密碼長度,8~32位;
? ?b)、密碼有字母、數(shù)字、符號至少2位以上組成;
? ?c)、密碼不能出現(xiàn)3位以上的連續(xù)正序或倒序數(shù)字或字母;
情景2:為了避免網(wǎng)絡抓包獲取賬號、密碼等場景
策略2:密碼賬號傳輸加密 MD5加密
?客戶端與服務端API傳輸信息的過程中,對賬號、密碼信息做MD5加密處理。
情景3:賬號、密碼已泄露,避免別人登錄操作等場景
策略3:登錄成功后,向用戶推送微信消息提醒,若非本人操作,可強制退登操作
登錄成功后,可通過推送讓賬戶本人知曉,什么時間在什么IP登錄網(wǎng)站,若非本人操作,提醒用戶做強制退登、修改密碼、聯(lián)系系統(tǒng)方人員等操作,來阻止異常操作。
情景4:若用戶登錄系統(tǒng)操作一段時間,因其他原因離開不操作了,避免別人趁機操作
策略4:對已登錄賬號連續(xù)N小時不操作,需要重新登錄??
N可依據(jù)業(yè)務對安全性要求的強弱而定,一般30分鐘。
情景5:區(qū)分登錄操作行為是人為還是程序腳本機器行為
策略5:登錄操作的關鍵行為點,添加如滑塊、圖片等行為驗證碼
情景6:確定操作者是用戶本人
策略7:手機動態(tài)驗證碼機制?
? ?a)、30天以上未登錄過系統(tǒng)的用戶,首次登錄須短信驗證;
? ?b)、針對PC端,采用陌生IP短信驗證機制,即用戶登錄時判斷該用戶在該IP是否有成功登錄系統(tǒng)記錄,無則需要短信驗證;
? c)、密碼出錯短信驗證機制。同一賬號登錄時,賬號密碼20分鐘內(nèi)連續(xù)錯誤5次,則將賬號鎖定30分鐘,解鎖后再次登錄即需要短信驗證碼;
? d)、修改密碼須短信驗證。
情景7:為了保證沉默賬戶或預防賬戶被盜
策略7:建議修改密碼
? ?a)、連續(xù)三個月未修改過密碼,建議修改密碼
? b)、兩次登錄時間超過半年以上,建議修改密碼
情景8:監(jiān)測異常行為
策略8:監(jiān)測到異常IP進行封鎖,非人為所能達到的操作異常監(jiān)測
a)、同一IP,登錄次數(shù)超過20次,對該IP進行封鎖不可訪問
b)、一分鐘內(nèi)登錄次數(shù)超過20次,可能非人為操縱