說到在http協(xié)議下用戶登錄如何保證密碼安全這個問題:
小白可能第一想法就是,用戶在登錄頁面輸入密碼進(jìn)行登錄時,前臺頁面對用戶輸入的密碼進(jìn)行加密,然后把加密后的密碼作為http請求參數(shù)通過網(wǎng)絡(luò)發(fā)到服務(wù)器。
這樣做是無法保證用戶的賬戶安全的,因為稍微懂一點編程知識的人就可以通過你發(fā)送的http請求知道了你的密碼,小白又說了,我密碼加密了,它拿到的也是加密后的密碼,它不知道我的原始密碼它是無法從登錄頁面登錄的。
原文和作者一起討論:http://www.cnblogs.com/intsmaze/p/6009648.html
新浪微博:intsmaze劉洋洋哥
但是小白啊,你有沒有想過,有時候我僅僅知道你加密后的明文就夠了,我可以自己偽造http請求,把明文加在請求參數(shù)里面,一樣可以登錄系統(tǒng)的。
大白這時候有話說了,大白:我可以對密碼進(jìn)行加鹽。好,我們先看加鹽是什么,加鹽簡單說就是程序?qū)τ脩粼O(shè)置的原始密碼后面追加隨機數(shù)來加強用戶密碼的復(fù)雜性,然后再對組合后的密碼進(jìn)行加密進(jìn)行存儲,用戶每一次登錄,前端先對用戶輸入密碼進(jìn)行加密傳輸?shù)胶蠖?,然后后端獲得用戶賬號到數(shù)據(jù)庫找到該用戶的鹽,再和傳來的明文組合一起進(jìn)行一次加密后與數(shù)據(jù)庫中的密碼進(jìn)行對比來判斷是否是符合用戶。但是啊,大白,你看,這樣做,并無法控制其他人通過你http請求獲得明文,獲得后,人家照樣大搖大擺使用你的身份登錄系統(tǒng)進(jìn)行操作。
好,大白讓我跟你講講加鹽的真正意義:加鹽的意義不是為了保證密碼在網(wǎng)絡(luò)傳輸?shù)陌踩裕欠乐箶?shù)據(jù)庫被人入侵后,由于原始密碼太過簡單,被人分析出來,進(jìn)而知道了密碼。直接對密碼進(jìn)行MD5處理后,反向解密確實難度很大,但還是可以找出破綻