Web登錄很簡單?開玩笑!
本文通過 Web 登錄的例子探討安全問題,登錄不僅僅是簡單地表達(dá)提交和記錄寫入,其安全問題才是重中之重。
1. 一個(gè)簡單的HTML例子看看用戶信息安全
標(biāo)準(zhǔn)的HTML語法中,支持在form表單中使用<input></input>標(biāo)簽來創(chuàng)建一個(gè)HTTP提交的屬性,現(xiàn)代的WEB登錄中,常見的是下面這樣的表單:
<form action= "Application/login" method = "POST">
用戶名:<input id="username" name="username" type="text"/>
密碼:<input id="password" name="password" type="password" />
<button type="submit">登陸</button>
</form>
例如我的賬號是user1,密碼是123456,那么我在提交登錄的時(shí)候會(huì)給后臺(tái)發(fā)送的HTTP請求如下(Chrome或者FireFox開發(fā)者工具捕獲,需開啟Preserve log):
2. HTTP協(xié)議傳輸直接暴露用戶密碼字段

3. 使用加密算法能保證密碼安全嗎?
對稱加密:采用對稱密碼編碼技術(shù),它的特點(diǎn)是文件加密和解密使用相同的密鑰加密。
非對稱加密:需要兩個(gè)密鑰,公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數(shù)據(jù)進(jìn)行加密,只有用對應(yīng)的私有密鑰才能解密;如果用私有密鑰對數(shù)據(jù)進(jìn)行加密,那么只有用對應(yīng)的公開密鑰才能解密。
3.1 使用對稱加密
加密解密在前后臺(tái)協(xié)商后,似乎是個(gè)不錯(cuò)的辦法,比如,前臺(tái)使用一個(gè)字符串位移+字符串反轉(zhuǎn)的簡單方法(舉個(gè)例子,當(dāng)然不能這么簡單)。那么,如果原密碼123456先移位:
123456-->456123
456123-->321654
那么這樣簡單的方法似乎可以混淆原密碼,并且輕松由后臺(tái)進(jìn)行相反操作復(fù)原。但是這有兩個(gè)缺點(diǎn):
3.2 非對稱加密HTTPS就一定是安全的嗎?
但是HTTPS就一定安全嗎?HTTP存在兩種可能的風(fēng)險(xiǎn):
4. 結(jié)論是,無論HTTP還是HTTPS,密碼必須密文傳輸
5. 那太好了!這樣可以省下HTTPS的錢了,真是這樣嗎?

5.1 方案一:驗(yàn)證碼
5.2 方案二:token令牌
6. 太不容易了!可是還別高興的太早,當(dāng)心數(shù)據(jù)被篡改
6.1 什么是“數(shù)字摘要”
6.2 數(shù)字簽名--水到渠成的技術(shù)
7. 總結(jié)
補(bǔ)充1:JS加密函數(shù)存在被破解
如果黑客通過閱讀前端js源碼,發(fā)現(xiàn)加密算法,是否意味他可以構(gòu)造可以
被服務(wù)端解密的checkCode 來欺騙服務(wù)端呢 ?
摘要或加密JS算法不直接以靜態(tài)文件的形式存在瀏覽器中,而是讓W(xué)EB端去請求Server,服務(wù)器可以根據(jù)隨機(jī)令牌token值決定返回一個(gè)相應(yīng)隨機(jī)的加密策略,以JS代碼響應(yīng)的方式返回,在異步請求響應(yīng)中,加載JS摘要算法,這樣客戶端就可以動(dòng)態(tài)加載數(shù)字摘要策略,保證無法仿造。
補(bǔ)充2:MD5存在隱患的問題
用MD5、SHA256 處理密碼的過時(shí)了。?!,F(xiàn)在 PBKDF、bcrypt 都在過時(shí)中。
對于MD5的破解,實(shí)際上都屬于【碰撞】。比如原文A通過MD5可以生成摘要M,我們并不需要把M還原成A,只需要找到原文B,生成同樣的摘要M即可。
設(shè)MD5的哈希函數(shù)是MD5(),那么:
MD5(A) = M
MD5(B) = M
任意一個(gè)B即為破解結(jié)果。
B有可能等于A,也可能不等于A。
原文:www.cnblogs.com/letcafe
~本文完~
推薦閱讀:
深入研究 CSS 中的 ::before 和 ::after 偽元素
最近面試BAT,整理一份面試資料《前端面試BAT通關(guān)手冊》,覆蓋了前端技術(shù)、CSS、JavaScript、框架、 數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。 獲取方式:關(guān)注公眾號并回復(fù) 前端 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。 明天見(??ω??)??
評論
圖片
表情
