簡(jiǎn)介
??認(rèn)證的目的是為了認(rèn)出用戶是誰(shuí),而授權(quán)的目的是為了決定用戶能夠做什么。
??認(rèn)證實(shí)際上就是一個(gè)驗(yàn)證憑證的過(guò)程。
??如果只有一個(gè)憑證被用于認(rèn)證,則稱為"單因素認(rèn)證"
??如果有兩個(gè)或多個(gè)憑證被用于認(rèn)證,則稱為“雙因素(two factors)認(rèn)證”或"多因素認(rèn)證"。
Session Fixation攻擊
??沒(méi)有換鎖而導(dǎo)致的安全問(wèn)題,就是Session Fixation問(wèn)題,在用戶登錄網(wǎng)站的過(guò)程中,如果登陸前后用戶的Session ID沒(méi)有發(fā)生變化,則會(huì)存在Session Fixation問(wèn)題。
??解決Session Fixation問(wèn)題的正確做法是,在登錄完成后,重寫SessionID。如果使用sid則需要重置sid的值;如果使用cookie,則需要增加或修改用于認(rèn)證的cookie值。
Session保持攻擊
??一般來(lái)說(shuō)Session是有生命周期的,當(dāng)用戶長(zhǎng)時(shí)間未活動(dòng)后,或者用戶點(diǎn)擊退出后,服務(wù)器將銷毀Session。
??攻擊者可以通過(guò)不停的發(fā)起訪問(wèn)請(qǐng)求,讓Session一“直活”下去。
??當(dāng)Session被加密保存在cookie里時(shí),很多應(yīng)用都是利用cookie的expire標(biāo)簽來(lái)控制Session的失效時(shí)間。cookie的expire時(shí)間是完全可以由客戶端控制的。攻擊者甚至可以為Session cookie增加一個(gè)expire時(shí)間。
??對(duì)抗這種Session保持攻擊,一般為Session設(shè)置一個(gè)閾值。比如2天后強(qiáng)制Session過(guò)期。
單點(diǎn)登錄(SSO)
??單點(diǎn)登錄的英文全稱是Single Sign On簡(jiǎn)稱SSO。他希望用戶只需登錄一次,就可以訪問(wèn)所有系統(tǒng)。(騰訊QQ)
??SSO的優(yōu)點(diǎn)在于風(fēng)險(xiǎn)及中化,就只需要保護(hù)這一個(gè)點(diǎn)。它把用戶登錄的過(guò)程集中在一個(gè)地方,在單點(diǎn)出設(shè)計(jì)安全方案,甚至可以考慮一些“重”的方法,比如雙因素認(rèn)證。
??SSO的缺點(diǎn)是,因?yàn)轱L(fēng)險(xiǎn)集中了,所以單點(diǎn)一旦被攻破了的話,后果會(huì)非常嚴(yán)重,影響的范圍將涉及所有單點(diǎn)登陸系統(tǒng)。降低風(fēng)險(xiǎn)的辦法是在一些敏感的系統(tǒng)里,再單獨(dú)實(shí)現(xiàn)實(shí)現(xiàn)一個(gè)額外的認(rèn)證機(jī)制。
??目前互聯(lián)網(wǎng)上最為開(kāi)放和流行的單點(diǎn)登錄系統(tǒng)是OpenID。OpenID是一個(gè)開(kāi)放的單點(diǎn)登錄框架,他希望使用URI作為用戶在互聯(lián)網(wǎng)上的身份標(biāo)識(shí),每個(gè)用戶(End User)將擁有一個(gè)唯一的URI。在用戶登錄網(wǎng)站(Relying Party)時(shí),用戶只需要提交他的OpenID(就是用戶唯一的URI)以及OpenID的提供者(OpenID Provider),網(wǎng)站就會(huì)將用戶定向到OpenID的提供者進(jìn)行認(rèn)證,認(rèn)證完成后在重定向回網(wǎng)站。
小結(jié)
??在web應(yīng)用中,用戶登錄之后,服務(wù)器端通常會(huì)建立一個(gè)新的Session用來(lái)跟蹤用戶狀態(tài)。每個(gè)Session對(duì)應(yīng)一個(gè)標(biāo)識(shí)符SessionID,SessionID用來(lái)標(biāo)識(shí)用戶身份,一般是加密保存在cookie中。有的網(wǎng)站也會(huì)將Session保存在cookie中,以減輕服務(wù)器端維護(hù)Session的壓力,圍繞著Session可能產(chǎn)生很多安全問(wèn)題,這些問(wèn)題都是在設(shè)計(jì)安全方案時(shí)需要考慮到的。
詳情請(qǐng)參考書籍
摘自:《白帽子講Web安全》 — 吳翰清