who am i
認(rèn)證的目的是為了認(rèn)出用戶是誰(shuí)为朋,而授權(quán)的目的是為了決定用戶能夠在做什么之众。
認(rèn)證實(shí)際上就是一個(gè)驗(yàn)證憑證的過(guò)程。
密碼的那些事情
首先是增強(qiáng)密碼強(qiáng)度,
接著是密碼必須是不可逆的加密算法所踊,或者是單向散列函數(shù)算法,加密后存儲(chǔ)在數(shù)據(jù)庫(kù)中概荷。
最后防止破解秕岛,增加了salt 這個(gè)隨機(jī)字符串,注意這個(gè)字符串應(yīng)該保存在服務(wù)器端的配置文件中误证,并妥善保管继薛。
多因素認(rèn)證
除了密碼外,還可以增加手機(jī)動(dòng)態(tài)指令愈捅,數(shù)字證書遏考,支付盾,寶令蓝谨,第三方證書灌具。
session與認(rèn)證
密碼與證書等認(rèn)證手段青团,一般般僅用于登錄過(guò)程,驗(yàn)證一次咖楣,成功后督笆,瀏覽器每次請(qǐng)求頁(yè)面使用用戶透明的憑證-sessionID
sessionID加密保存在cookie中,sessionID在生命周期內(nèi)被竊取诱贿,就等于賬戶失竊娃肿,session劫持就是通過(guò)這個(gè),使用sessionID登錄目標(biāo)賬戶攻擊珠十。如果sessionID是保存在cookie中的料扰,則這種攻擊就可以稱為cookie劫持。
還可以保存在URL中宵睦,通過(guò)但是一個(gè)典型場(chǎng)景為referer泄露URL中的額sid.
session fixation攻擊
車子交付后记罚,我還有鑰匙,這個(gè)沒(méi)有換鎖引起的安全問(wèn)題就是session fixation問(wèn)題壳嚎。
sessionID保存在cookie中桐智,比較難做到這一點(diǎn)。現(xiàn)在多用cookie烟馅,所以現(xiàn)在這個(gè)攻擊很少有用武之地说庭。
解決這個(gè)攻擊正確做法是,在登錄之后郑趁,重寫sessionID刊驴。
如果使用sid則需要重置sid的值,如果使用cookie寡润,則需要增加或改變用于認(rèn)證的cookie捆憎。
session保持攻擊
活動(dòng)的session長(zhǎng)期不消除。就會(huì)成為一個(gè)backasshole,成為一個(gè)攻擊后門梭纹。攻擊者通過(guò)不斷發(fā)送訪問(wèn)請(qǐng)求躲惰,讓session一直活下去。其原理就是不停的刷新頁(yè)面变抽,以保持session不過(guò)期础拨。很多應(yīng)用都是利用cookie的expire標(biāo)簽來(lái)控制session的失效時(shí)間。
如何對(duì)抗這種攻擊呢绍载。
一種方法是在一定時(shí)間后诡宗,強(qiáng)制銷毀session。
單點(diǎn)登錄sso
他希望用戶只需要登錄一次击儡,就可以訪問(wèn)所有系統(tǒng)塔沃。從用戶體驗(yàn)的角度,無(wú)疑讓用戶的使用更加方便曙痘。從安全的角度來(lái)說(shuō)芳悲,把風(fēng)險(xiǎn)集中到一個(gè)單點(diǎn)上立肘,這樣做是有利有弊的。
目前最流行的最為開(kāi)放和流行的是openID名扛,這是個(gè)開(kāi)放的單點(diǎn)登錄框架谅年,他希望使用URL作為用戶在互聯(lián)網(wǎng)的身份標(biāo)識(shí),每個(gè)用戶擁有一個(gè)唯一的URL肮韧。