Web系統(tǒng)是當(dāng)今IT系統(tǒng)中最常見(jiàn)的损肛,用戶登錄鑒權(quán)基本也是必備的厢破,因此用戶登錄階段的安全性非常重要
如果給安全性分個(gè)類,我想可以分為:
- 明文傳輸(極不安全)
- 對(duì)密碼加密后傳輸(稍微安全治拿,但是基本上也是形同虛設(shè))
- 每次傳輸均隨機(jī)加密(安全性較高)
這里我們不討論HTTPS的情況摩泪,HTTPS是基于客戶端和服務(wù)器端證書(shū)的,連Url中的參數(shù)都會(huì)加密
下面分別講一下每個(gè)方式的實(shí)現(xiàn)和安全漏洞
- 明文傳輸(極不安全)
這種是最不安全的方式劫谅,大概實(shí)現(xiàn)是通過(guò)傳輸username和password原始值來(lái)實(shí)現(xiàn)的见坑。這樣其實(shí)涉及到攔截問(wèn)題,如果有人能夠攻破局域網(wǎng)內(nèi)的路由器捏检,其實(shí)所有經(jīng)過(guò)該路由器的請(qǐng)求都可以被檢測(cè)到荞驴,密碼當(dāng)然也會(huì)被攔截,所以除非是畢業(yè)設(shè)計(jì)或者原型演示項(xiàng)目圖方便贯城,極不推薦這樣實(shí)現(xiàn)
- 對(duì)密碼加密后傳輸(稍微安全熊楼,但是基本上也是形同虛設(shè))
這種方式是對(duì)明文的一個(gè)改進(jìn),一般對(duì)密碼進(jìn)行Md5加密冤狡,然后數(shù)據(jù)庫(kù)內(nèi)部也存儲(chǔ)Md5加密后的密碼孙蒙,這種方式依然避免不了別人惡意攔截請(qǐng)求项棠,獲取到MD5加密后的密碼,基本上拿到這個(gè)相當(dāng)于拿到密碼了挎峦,每次可以用這個(gè)加密后的值請(qǐng)求登錄接口來(lái)實(shí)現(xiàn)登錄香追,這種方式也不推薦
- 每次傳輸均隨機(jī)加密(安全性較高)
這種方式是每次請(qǐng)求均附加一個(gè)隨機(jī)數(shù)(一般取時(shí)間戳),然后把用戶輸入的密碼進(jìn)行md5加密坦胶,加密后的值與隨機(jī)數(shù)拼接透典,再取md5值,具體算法如下:Key = Md5(Md5(password)+ts)顿苇;然后登錄接口接收三個(gè)參數(shù):用戶名峭咒,隨機(jī)值(時(shí)間戳),加密后的Key纪岁,登錄邏輯按照加密方式進(jìn)行判斷凑队,服務(wù)端也可以根據(jù)時(shí)間戳來(lái)防止暴力登錄
當(dāng)然最安全的是HTTPS實(shí)現(xiàn)登錄,如果沒(méi)有HTTPS條件的話幔翰,推薦使用第三種方式漩氨,你說(shuō)呢?