在普通HTTP上安全地傳輸密碼
更新時間:2007年07月21日 00:00:00 作者:
1。理論
在普通HTTP上,一般表單中的密碼都是以明文方式傳到服務(wù)器進(jìn)行處理的。這無疑給了壞人以可乘之機!這里我們就說說怎么傳輸密碼才是安全的!
與其傳輸密碼本身,到不如傳輸其加密后的形式。MD5是個不錯的選擇。第一,不同的資源幾乎不可能生成相同的MD5摘要,第二,MD5的編碼方式是不可逆推的。有了這些特性,我們就可以讓MD5摘要公開的在Internet上傳輸,而不必?fù)?dān)心密碼被壞人知道。然后在服務(wù)端也將密碼通過同樣的方式加密,最后比較這兩個字符串。
然而,我們不能為了登陸而將密碼md5后直接通過Internet傳輸,因為壞人雖然不會知道我們的密碼,但肯定會知道這個特殊的字符串可以授權(quán)他們訪問我們的網(wǎng)站!
這就是公匙和私匙要解決的問題,首先由服務(wù)器提供一個隨機字符串,然后客戶端將這個隨機字符串和密碼相加后再加密!
每次登陸時,服務(wù)器會產(chǎn)生不同的隨機字符串,這樣你的密碼沒有變,但是通過上面的方法加密后的MD5摘要卻完全不同。這樣就算壞人得到了這些MD5摘要,他們也不可能分析出你的密碼!
這種方法中,服務(wù)器提供的隨機字符串叫做"公匙",壽命很短,并可以被任何人利用;你的密碼叫做"私匙",壽命很長,而且永遠(yuǎn)也不會被人知道。
2。實現(xiàn)
客戶端Javascript并沒有提供現(xiàn)成的md5算法,但我們在 google 上用 "md5 javascript" 搜索,就可以得到很多md5在Javascript上實現(xiàn)的例子。
在PHP中我就不用多說了,直接用md5()這個函數(shù)就可以搞定!隨機字符串我們可以用session來存儲(PHP就是強啊~~)
3。注意
在JS中,中文都是UTF-8格式的,所以如果你的密碼是中文,而且存儲在服務(wù)端的密碼的編碼方式是GB2312,那么兩個密碼加密后的字符串是完全不同的!
在普通HTTP上,一般表單中的密碼都是以明文方式傳到服務(wù)器進(jìn)行處理的。這無疑給了壞人以可乘之機!這里我們就說說怎么傳輸密碼才是安全的!
與其傳輸密碼本身,到不如傳輸其加密后的形式。MD5是個不錯的選擇。第一,不同的資源幾乎不可能生成相同的MD5摘要,第二,MD5的編碼方式是不可逆推的。有了這些特性,我們就可以讓MD5摘要公開的在Internet上傳輸,而不必?fù)?dān)心密碼被壞人知道。然后在服務(wù)端也將密碼通過同樣的方式加密,最后比較這兩個字符串。
然而,我們不能為了登陸而將密碼md5后直接通過Internet傳輸,因為壞人雖然不會知道我們的密碼,但肯定會知道這個特殊的字符串可以授權(quán)他們訪問我們的網(wǎng)站!
這就是公匙和私匙要解決的問題,首先由服務(wù)器提供一個隨機字符串,然后客戶端將這個隨機字符串和密碼相加后再加密!
每次登陸時,服務(wù)器會產(chǎn)生不同的隨機字符串,這樣你的密碼沒有變,但是通過上面的方法加密后的MD5摘要卻完全不同。這樣就算壞人得到了這些MD5摘要,他們也不可能分析出你的密碼!
這種方法中,服務(wù)器提供的隨機字符串叫做"公匙",壽命很短,并可以被任何人利用;你的密碼叫做"私匙",壽命很長,而且永遠(yuǎn)也不會被人知道。
2。實現(xiàn)
客戶端Javascript并沒有提供現(xiàn)成的md5算法,但我們在 google 上用 "md5 javascript" 搜索,就可以得到很多md5在Javascript上實現(xiàn)的例子。
在PHP中我就不用多說了,直接用md5()這個函數(shù)就可以搞定!隨機字符串我們可以用session來存儲(PHP就是強啊~~)
3。注意
在JS中,中文都是UTF-8格式的,所以如果你的密碼是中文,而且存儲在服務(wù)端的密碼的編碼方式是GB2312,那么兩個密碼加密后的字符串是完全不同的!
相關(guān)文章
php將遠(yuǎn)程圖片保存到本地服務(wù)器的實現(xiàn)代碼
有些時候我們想保存一些漂亮圖片,但又不想手動去保存下來,尤其是大批量的存儲,這個時候我們需要寫一段程序來幫助我們完成這個工作,本文介紹了php如何將遠(yuǎn)程圖片本地化,需要的朋友可以參考下2015-08-08php常用字符串長度函數(shù)strlen()與mb_strlen()用法實例分析
這篇文章主要介紹了php常用字符串長度函數(shù)strlen()與mb_strlen()用法,結(jié)合實例形式分析了php字符串長度函數(shù)strlen()與mb_strlen()功能、用法及相關(guān)操作注意事項,需要的朋友可以參考下2019-06-06php數(shù)組函數(shù)序列之end() - 移動數(shù)組內(nèi)部指針到最后一個元素,并返回該元素的值
end() 函數(shù)將數(shù)組內(nèi)部指針指向最后一個元素,并返回該元素的值(如果成功)。2011-10-10phpQuery采集網(wǎng)頁實現(xiàn)代碼實例
這篇文章主要介紹了phpQuery采集網(wǎng)頁實現(xiàn)代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04