一、序言
最近,關注了一下關於web端登錄、傳輸數據加密的情景。發現了一些有意思的事情。某互聯網金融公司程序員做登錄驗證,先來一發md5加密,然后就自豪的說我的登錄是加密的,外人無法破解,絕對保障用戶的信息安全。事后博主發現,my gold,全站http協議,僅僅登錄使用了md5加密。 ps: 偷偷笑...
接下來,博主分享一些自己知道的東西,了解也不深,大家看看,了解一下就好。
大致列了一個目錄,道友們根據自己情況來看哈。有些知識還是需要鋪墊一下的。
二、 目錄
三、http 與 https
1. 首先,我們先來對這2種傳輸協議做個簡單了解。
http: 超文本傳輸協議,用於Web瀏覽器和網站服務器之間傳遞信息。明文方式發送內容,不提供任何方式的數據加密,入侵者可以抓包直接獲取傳輸的報文,進而獲取用戶數據。
https: 安全套接字層超文本傳輸協議,它在HTTP的基礎上加入了SSL協議,SSL依靠證書來驗證服務器的身份,並為瀏覽器和服務器之間的通信加密。
分為兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性。
2. 然后,我們來比較一下這2種協議
a、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。 而http不要錢
b、http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
c、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
d、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。
3. 在這簡單介紹一下https的一個步驟
a、客戶使用https的URL訪問Web服務器,要求與Web服務器建立SSL連接。
b、Web服務器收到客戶端請求后,會將網站的證書信息(證書中包含公鑰)傳送一份給客戶端。
c、客戶端的瀏覽器與Web服務器開始協商SSL連接的安全等級,也就是信息加密的等級。
d、客戶端的瀏覽器根據雙方同意的安全等級,建立會話密鑰,然后利用網站的公鑰將會話密鑰加密,並傳送給網站。
e、Web服務器利用自己的私鑰解密出會話密鑰。
f、Web服務器利用會話密鑰加密與客戶端之間的通信。
看到這,相信大家應該對這2種協議已經有個比較清晰的印象了。有人就說了,這https這么牛逼,似乎這個加密問題已經解決了。但是遠沒那么簡單,https雖然安全,但是它對於黑客攻擊、服務器劫持啥的,還是形同虛設,沒多大用處。而且這些提供證書的機構、組織啦,說白了還是人,人家有你的證書,這些人可以拿着你的證書光明正大的解密。
ps: 好了,閑話說到這,這塊就是讓大家了解一下我們平時用的傳輸協議。
四、 加密信息分類
通常在web端的數據傳輸中,大部分數據是明文,不需要加密的。博主認為需要加密的數據分2種
1. 用戶的登錄信息。 (賬號、密碼。。。)
2. 用戶的私密信息。(姓名、銀行卡號、家庭住址。。。)
針對這2種數據,我們對加密的要求也是有所區別的,后者重要性稍弱了前者
五、 web端加密的問題和作用
現在我們知道,http協議是明文傳輸,只要別人一抓包就可以獲取到傳輸的報文,很多人會問,是不是http傳輸時前端都不需要進行數據加密了呢? 這個觀點是大大錯誤了,我們通過下邊幾點來分析一下,即便不安全也要加密的必要性
1. 前端對用戶密碼進行哈希值加密,比如說 md5 ,然后別人抓包,可以模擬登陸了。但是他僅僅是能登陸,他並不知道你的源密碼是啥,他截獲的是md5加密過的密文,這樣就大大降低了社會學攻擊。(解釋一些,社會學攻擊。大家習慣性將各個平台賬號設置為一個或者幾個密碼,方便記憶,人家拿了你一個,就去試別的,Duang!爆炸了!)
2. 前端加密也有一定安全性。我們簡單的加密,會被抓包,那我們可以將加密變得復雜一些。使這個直接抓包無法登陸,或者不容易登陸。
六、 如何安全的加密
繼續上面的話題,我們怎么加密,讓數據傳輸更安全,下面舉幾個例子
1. 使用 https。 你甚至可以用https登陸,完事再重定向到http的頁面,保證你頁面加載的流暢性
2. 就用 http。將 密碼+時間戳 加密后傳輸,服務端解密,並按照時間戳3s有效的方式允許登陸.這樣也能加強安全性 ps:3s 是我 yy 的哈
3. 仿照 qq 網頁版登錄的模式
function getEncryption(password, uin, vcode, isMd5) {
var str1 = hexchar2bin(isMd5 ? password : md5(password));
var str2 = md5(str1 + uin);
var str3 = md5(str2 + vcode.toUpperCase());
return str3
}
仿照qq登錄的模式。我們可以在打開登錄界面的時候,同時傳輸一個圖形驗證碼,驗證碼在后台有唯一性、時效性、一次性 的存儲。這樣登錄時將賬號、密碼、驗證碼、加密方式一同使用某不可逆加密方式加密,一般就用md5吧,這樣服務端用相同的方式加密,比對加密后的密文判斷登錄。這樣即便知道你的加密代碼,也不容易攻破。
4. 還有一種就是現在最簡單的,直接手機號+驗證碼登錄,安全有效、簡單。當然信息同樣需要加密。
七、 小結
以上就是所有內容了,介紹的比較淺,適合大家了解。正兒八經的web 安全學,東西太多,也待完善。如果文中有錯誤,還望指出!
