who am i
認(rèn)證的目的是為了認(rèn)出用戶是誰,而授權(quán)的目的是為了決定用戶能夠在做什么。
認(rèn)證實(shí)際上就是一個(gè)驗(yàn)證憑證的過程。
密碼的那些事情
首先是增強(qiáng)密碼強(qiáng)度,
接著是密碼必須是不可逆的加密算法,或者是單向散列函數(shù)算法,加密后存儲(chǔ)在數(shù)據(jù)庫中。
最后防止破解,增加了salt 這個(gè)隨機(jī)字符串,注意這個(gè)字符串應(yīng)該保存在服務(wù)器端的配置文件中,并妥善保管。
多因素認(rèn)證
除了密碼外,還可以增加手機(jī)動(dòng)態(tài)指令,數(shù)字證書,支付盾,寶令,第三方證書。
session與認(rèn)證
密碼與證書等認(rèn)證手段,一般般僅用于登錄過程,驗(yàn)證一次,成功后,瀏覽器每次請(qǐng)求頁面使用用戶透明的憑證-sessionID
sessionID加密保存在cookie中,sessionID在生命周期內(nèi)被竊取,就等于賬戶失竊,session劫持就是通過這個(gè),使用sessionID登錄目標(biāo)賬戶攻擊。如果sessionID是保存在cookie中的,則這種攻擊就可以稱為cookie劫持。
還可以保存在URL中,通過但是一個(gè)典型場景為referer泄露URL中的額sid.
session fixation攻擊
車子交付后,我還有鑰匙,這個(gè)沒有換鎖引起的安全問題就是session fixation問題。
sessionID保存在cookie中,比較難做到這一點(diǎn)。現(xiàn)在多用cookie,所以現(xiàn)在這個(gè)攻擊很少有用武之地。
解決這個(gè)攻擊正確做法是,在登錄之后,重寫sessionID。
如果使用sid則需要重置sid的值,如果使用cookie,則需要增加或改變用于認(rèn)證的cookie。
session保持攻擊
活動(dòng)的session長期不消除。就會(huì)成為一個(gè)backasshole,成為一個(gè)攻擊后門。攻擊者通過不斷發(fā)送訪問請(qǐng)求,讓session一直活下去。其原理就是不停的刷新頁面,以保持session不過期。很多應(yīng)用都是利用cookie的expire標(biāo)簽來控制session的失效時(shí)間。
如何對(duì)抗這種攻擊呢。
一種方法是在一定時(shí)間后,強(qiáng)制銷毀session。
單點(diǎn)登錄sso
他希望用戶只需要登錄一次,就可以訪問所有系統(tǒng)。從用戶體驗(yàn)的角度,無疑讓用戶的使用更加方便。從安全的角度來說,把風(fēng)險(xiǎn)集中到一個(gè)單點(diǎn)上,這樣做是有利有弊的。
目前最流行的最為開放和流行的是openID,這是個(gè)開放的單點(diǎn)登錄框架,他希望使用URL作為用戶在互聯(lián)網(wǎng)的身份標(biāo)識(shí),每個(gè)用戶擁有一個(gè)唯一的URL。