用戶身份驗證的方式

[TOC]
首先恋昼,引用知乎用戶黃慧鵬的一段話账劲。](https://www.zhihu.com/people/huang-hui-peng)%E7%9A%84%E4%B8%80%E6%AE%B5%E8%AF%9D%E3%80%82)
加密的本質(zhì)是對原有內(nèi)容的混淆齿诉,目的是提高從表面結(jié)果反推達到目的的成本腮郊。在網(wǎng)頁提交(其實所有的通信都有這個問題)密碼這個問題上谆刨,需要有幾個維度來保證安全鉴逞,首先是切面的安全性,對于一次提交首先保護的是密碼本身偎痛,從最早的Base64到MD5或是SHA都可以做到這一點旱捧,但是Base64是可逆的,對于密碼本身的保護是很弱的踩麦,哈希算法解決了這個問題枚赡,將不同長度的數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一長度的大數(shù)字,而理論上這個數(shù)字對應(yīng)無窮多解谓谦,但限于密碼的輸入有限制贫橙,其實是可逆的,所以從1次混淆的MD5變成了3次混淆的SHA反粥,但是隨著現(xiàn)代計算機技術(shù)的進步卢肃,逆運算的成本不斷降低,人們不得已要使用更大的數(shù)字來提高這個難度才顿,但是為了向成本和發(fā)展妥協(xié)践剂,人們不得已使用統(tǒng)一的算法,在CS時代由于很難侵入到CS兩端娜膘,所以相對的雙方使用的算法是保密的逊脯,破解難度相對比較大,BS由于為了保證開放性竣贪,特別是js本身就是明文算法军洼,所以其實只能說防君子不妨小人,所以就有了安全控件演怎,控件的唯一目的是用2進制代碼來隱藏加密的算法匕争,不知道算法,也就很難破解原文爷耀。第二維度就是時間甘桑,如果密碼一樣加密結(jié)果也會一樣,那么在不使用原文的情況下,可以使用加密過后的數(shù)據(jù)來模擬用戶登錄的動作也是可以的跑杭,所以純粹對密碼的加密其實不能解決這個問題铆帽,所以有了鹽值,讓同一個數(shù)據(jù)在不同情況下結(jié)果依舊不一致德谅,但是鹽值需要約定爹橱,總會被人找出規(guī)律,只是成本又高了點窄做,所以還是不安全愧驱,這就引發(fā)了通訊安全的問題。所以出現(xiàn)了https使用非對稱加密來保護數(shù)據(jù)通路上的安全椭盏,讓通訊變得不可窺視组砚。但是還有個東西叫木馬,所以人們在輸入上繼續(xù)做文章掏颊,包括混淆輸入惫确,就是軟鍵盤,好的控件不會把明文存在內(nèi)存里蚯舱,這很重要,以前的VB掩蛤、Dephi密碼控件都僅僅看不到枉昏,實際內(nèi)存里面都是明文,很容易被病毒和木馬利用揍鸟,所以一般來說現(xiàn)在最安全的bs系統(tǒng)使用控件保護輸入兄裂,隱藏自己的HASH算法,用HTTPS保護通訊阳藻。但是ssl都有漏洞被爆出晰奖,所以好的系統(tǒng)加上用戶自己勤換密碼才是保護自己的不二法則,不過腥泥,太累了匾南,所以使用硬件ukey吧,成本稍高

cookie和session的安全性

1 用戶密碼存放于cookie蛔外,每次請求都帶上蛆楞。

安全性
密碼存放在cookie中,非常不安全夹厌。即使對密碼進行加密豹爹,但是其他人只要盜竊了cookie,就算他不知道密碼矛纹,也可以使用加密后的密碼進行登錄臂聋。

2 用戶信息存在session中,cookie中存放sessionid

安全性
很不安全,cookie被盜竊孩等,拿到sessionid艾君,就可以獲得用戶身份。
開始httponly后瞎访,雖然無法使用腳本盜竊cookie腻贰,但是請求的數(shù)據(jù)在傳輸過程中可能被截獲,也會導(dǎo)致cookie被盜扒秸。
具體可以參考cookie和session泄露與防范

session放在url中傳遞播演,服務(wù)器使用url重寫。

很不安全啊伴奥,不要用這種方式写烤,發(fā)明這種方式的人簡直腦子有坑啊。

cookie和session泄露與防范

sessionid固定問題

攻擊者使用一些方法拾徙,讓用戶使用給定的sessionid進行登錄洲炊,服務(wù)器就會把這個sessionid與會話綁定。攻擊者就可以使用這個sessionid偽裝用戶尼啡。
不得不說暂衡,會出現(xiàn)這種問題,服務(wù)器的開發(fā)者是個弱智崖瞭】癯玻客戶端的用戶信息非常不可靠,竟然還是用客戶端傳過來的sessionid綁定书聚,你是有多懶唧领?
解決:登錄成功后,刷新sessionid雌续。

除了sessionid外斩个,添加其他驗證標識

例如,ip驯杜,User-Agent, 服務(wù)器收到用戶請求時受啥,把額外標志放到session中,用戶的下一次請求對額外標志與session中的額外標志進行對比鸽心,如果不一致腔呜,就彈出層讓用戶輸入密碼。
當然再悼,這個方法并不是完全可靠的核畴,如果用戶在使用代理軟件,那么ip隨時可能變化冲九。另外谤草,在局域網(wǎng)中跟束,多個用戶對服務(wù)器來說使用同一個外網(wǎng)ip,那么局域網(wǎng)內(nèi)的session盜竊是不能用這個方法防范的丑孩。

添加token

使用隨機秘鑰對sessionid進行加密冀宴,生成token, 這樣身份標識就增加到了3個:sessionid User-Agent token温学。
但是既然盜竊者可以拿到sessionid略贮,那么他就可以輕易的同樣拿到user-agent 和 token,這樣來看仗岖,token并沒有為盜竊者增加難度逃延。
所以,我們可以使用不同的方式來傳輸轧拄,sessionid放在cookie中揽祥,token放在get或者post參數(shù)中。
當然檩电,這些手段拄丰,雖然看起來增加了一些安全性,然而俐末,無法避免在傳輸過程中料按,請求被攔截,然后進行盜竊卓箫。
事實上载矿,像前面這幾種方法,就算你添加100個用戶標識丽柿,也是然并卵,除了增加服務(wù)器負擔魂挂,沒有帶來多少安全性的提升甫题。

在http下,如何對用戶登錄密碼進行加密

有人認為http下涂召,在客戶端對用戶密碼加密是多此一舉坠非,攻擊者總是可以獲得加密后的信息,進行重復(fù)登錄果正。
其實不然炎码,只需要在登錄時,添加上一個隨機碼秋泳,就可以保存密碼的安全潦闲。
登錄前,服務(wù)器向客戶端發(fā)送一個隨機碼迫皱,客戶端歉闰,使用用戶名,密碼,隨機碼和其他信息和敬,進行Hash加密凹炸,服務(wù)器收到請求后,從數(shù)據(jù)庫去除用戶信息昼弟,用同樣方式進行hash加密啤它,若相同,則驗證通過舱痘,同時隨機碼失效变骡。
攻擊者即使獲取到加密后的信息,也無法進行重復(fù)攻擊衰粹,因為隨機碼已經(jīng)失效锣光。
其實不僅僅是隨機碼,隨便一個可變的數(shù)據(jù)铝耻,都可以用戶加密密碼信息誊爹。比如時間戳。

這種方法可以保證http下密碼的安全性瓢捉,但是這僅僅對登錄有用频丘,其他的數(shù)據(jù)傳輸還是要靠sessionid來辨別用戶身份,sessionid被盜泡态,還是不安全搂漠。

想要真正的安全性,還是要靠HTTPS來保證某弦。

或者使用token驗證

用戶在注冊登錄和身份驗證中的安全性問題和處理方法

1 注冊和登錄時桐汤,密碼在傳輸過程中不能是明文
2 防止攻擊者拿到密文后,進行重放攻擊
3 數(shù)據(jù)庫保存密碼不能是明文

總之靶壮,可以采取的方案如下:
1怔毛、服務(wù)器端,用戶注冊時腾降,客戶端提交(密碼M+驗證碼N進行可逆的方法加密)=密文O拣度,服務(wù)器端,保存有驗證碼N螃壤,故而抗果,可以逆向運算獲得密碼M (隨機碼A) 和 (密碼B+隨機碼A進行MD5加密)密文C。雖然密文O是可逆的運算奸晴,但是冤馏,在提交過程中是不包括驗證碼N的,加上比較獨特的加密算法寄啼,基本可以保證安全了宿接。
2赘淮、提交注冊或登錄信息時,客戶端先從服務(wù)端獲得隨機碼A睦霎,然后提交(隨機碼A) 和 MD5(MD5(密碼B)+ 隨機碼A)=密文C梢卸,服務(wù)端組合后進行MD5加密,與數(shù)據(jù)庫驗證副女。
3 另外蛤高,可以采用類似https的方式,比如非對稱加密 + 隨機碼(防重放)碑幅。

在http環(huán)境下戴陡,沒有任何方法是安全,只能放君子不防小人沟涨,這些方法也只是增加破解的復(fù)雜度恤批。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市裹赴,隨后出現(xiàn)的幾起案子喜庞,更是在濱河造成了極大的恐慌,老刑警劉巖棋返,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件延都,死亡現(xiàn)場離奇詭異,居然都是意外死亡睛竣,警方通過查閱死者的電腦和手機晰房,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來射沟,“玉大人殊者,你說我怎么就攤上這事⊙楹唬” “怎么了猖吴?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長簿姨。 經(jīng)常有香客問我距误,道長簸搞,這世上最難降的妖魔是什么扁位? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮趁俊,結(jié)果婚禮上域仇,老公的妹妹穿的比我還像新娘。我一直安慰自己寺擂,他們只是感情好暇务,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布泼掠。 她就那樣靜靜地躺著,像睡著了一般垦细。 火紅的嫁衣襯著肌膚如雪择镇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天括改,我揣著相機與錄音腻豌,去河邊找鬼。 笑死嘱能,一個胖子當著我的面吹牛吝梅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播惹骂,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼苏携,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了对粪?” 一聲冷哼從身側(cè)響起右冻,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎衩侥,沒想到半個月后国旷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡茫死,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年跪但,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片峦萎。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡屡久,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出爱榔,到底是詐尸還是另有隱情被环,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布详幽,位于F島的核電站筛欢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏唇聘。R本人自食惡果不足惜版姑,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望迟郎。 院中可真熱鬧剥险,春花似錦、人聲如沸宪肖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至么介,卻和暖如春娜遵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背壤短。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工魔熏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鸽扁。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓蒜绽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親桶现。 傳聞我的和親對象是個殘疾皇子躲雅,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容