? ? ? 今天介紹一下http認(rèn)證,http認(rèn)證是專為web程序量身打造的身份驗(yàn)證機(jī)制,但現(xiàn)在卻幾乎沒(méi)系統(tǒng)使用。其中的原因包括:http認(rèn)證的界面與瀏覽器程序自身的UI相關(guān)胚膊,導(dǎo)致界面布局很不靈活;很難兼容其他更復(fù)雜的非基于密碼的授權(quán)機(jī)制想鹰;無(wú)法控制授權(quán)認(rèn)證會(huì)緩存多久失效,并且很難和其他域名共享授權(quán)药版。
? ? ? http認(rèn)證協(xié)議相當(dāng)簡(jiǎn)單辑舷。首先,瀏覽器會(huì)先發(fā)送一個(gè)未被認(rèn)證的普通http請(qǐng)求槽片,此時(shí)服務(wù)器返回“401 Unauthorized”響應(yīng)代碼何缓。而服務(wù)器返回的響應(yīng)里,還會(huì)包含一個(gè)WWW-authenticate頭域还栓,其中包括本次請(qǐng)求的驗(yàn)證方式和標(biāo)識(shí)此范圍域的一個(gè)名為realm的字符串碌廓。 ?
? ? ? 接著,客戶端在獲得用戶輸入的授權(quán)信息后剩盒,會(huì)在之前那次普通的http請(qǐng)求的基礎(chǔ)上谷婆,再增加一個(gè)Authorization請(qǐng)求頭,這個(gè)請(qǐng)求頭存在經(jīng)過(guò)編碼的授權(quán)信息辽聊,然后重發(fā)一次請(qǐng)求纪挎。出于對(duì)性能的考慮,如果后續(xù)訪問(wèn)的是同一服務(wù)器的相同目錄跟匆,在后續(xù)的請(qǐng)求里會(huì)一律自動(dòng)加入Authorization頭域异袄。另外在訪問(wèn)服務(wù)器的不同目錄時(shí),如果收到realm 值和授權(quán)方法之前的一樣玛臂,也允許重用之前的WWW-Authenticate授權(quán)信息而無(wú)需重新輸入烤蜕。
? ? ? http認(rèn)證的攻擊應(yīng)用:在論壇的帖子里,黑客可以放入一個(gè)使用外部鏈接的圖片迹冤,放圖片的服務(wù)器對(duì)某些http請(qǐng)求發(fā)來(lái)一個(gè)“401 Unauthorized”響應(yīng)讽营,此時(shí)瀏覽帖子的用戶會(huì)非常意外的看到這個(gè)來(lái)路不明的密碼提示框,如果用戶輸入自己論壇的密碼叁巨,這些信息立刻就會(huì)發(fā)到攻擊者的圖片服務(wù)器斑匪。