PHP安全-重播攻擊
重播攻擊,有時(shí)稱為演示攻擊,即攻擊者重現(xiàn)以前合法用戶向服務(wù)器所發(fā)送的數(shù)據(jù)以獲取訪問(wèn)權(quán)或其它分配給該用戶的權(quán)限。
與密碼嗅探一樣,防止重播攻擊也需要你意識(shí)到數(shù)據(jù)的暴露。為防止重播攻擊,你需要加大攻擊者獲取任何用于取得受限資源的訪問(wèn)權(quán)限的數(shù)據(jù)的難度。這主要要求做到避免以下做法:
設(shè)定受保護(hù)資源永久訪問(wèn)權(quán)的數(shù)據(jù)的使用;
設(shè)定受保護(hù)資源訪問(wèn)權(quán)的數(shù)據(jù)的暴露(甚至是只提供臨時(shí)訪問(wèn)權(quán)的數(shù)據(jù));
這樣,你應(yīng)該只使用設(shè)定受保護(hù)資源臨時(shí)訪問(wèn)權(quán)的數(shù)據(jù),同時(shí)你還要盡力避免該數(shù)據(jù)泄露。這些雖只是一般的指導(dǎo)原則,但它們能為你的運(yùn)作機(jī)制提供指導(dǎo)。
第一個(gè)原則據(jù)我所知,違反它的頻率已達(dá)到了令人恐怖的程度。很多開發(fā)人員只注意保護(hù)敏感數(shù)據(jù)暴露,而忽視了用于設(shè)定受保護(hù)資源永久訪問(wèn)權(quán)的數(shù)據(jù)在使用時(shí)引發(fā)的風(fēng)險(xiǎn)。
例如,考慮一下用本地腳本計(jì)算驗(yàn)證表單密碼的hash值的情況。這樣密碼的明文不會(huì)暴露,暴露的只是它的hash值。這就保護(hù)了用戶的原始密碼。這個(gè)流程的主要問(wèn)題是重播漏洞依然如故——攻擊者可以簡(jiǎn)單的重播一次合法的驗(yàn)證過(guò)程即可通過(guò)驗(yàn)證,只要用戶密碼是一致的,驗(yàn)證過(guò)程就會(huì)成功。
更安全的運(yùn)行方案、MD5的JavaScript源文件以及其它算法,請(qǐng)看http://pajhome.org.uk/crypt/md5/。
類似于對(duì)第一原則的違反是指定一個(gè)cookie以提供對(duì)某一資源的永久訪問(wèn)權(quán)。例如,請(qǐng)考慮下面的通過(guò)設(shè)定cookie運(yùn)行的一個(gè)永久訪問(wèn)機(jī)制的嘗試:
CODE:
<?php
$auth = $username . md5($password);
setcookie(’auth’, $cookie);
?>
如果一個(gè)未驗(yàn)證用戶提供了一個(gè)驗(yàn)證cookie,程序會(huì)檢查在cookie中的密碼的hash值與存在數(shù)據(jù)庫(kù)中的密碼的hash是否匹配。如果匹配,則用戶驗(yàn)證通過(guò)。
本流程中的問(wèn)題是該驗(yàn)證cookie的暴露是一個(gè)非常大的風(fēng)險(xiǎn)。如果它被捕獲的話,攻擊者就獲得了永久訪問(wèn)權(quán)。盡管合法用戶的cookie可能會(huì)過(guò)期,但攻擊者可以每次都提供cookie以供驗(yàn)證。請(qǐng)看圖7-2中對(duì)這種情形的圖示。
一個(gè)更好的永久登錄方案是只使用設(shè)定臨時(shí)訪問(wèn)權(quán)的數(shù)據(jù),這也是下一節(jié)的主題。
相關(guān)文章:
1. 讓chatgpt將html中的圖片轉(zhuǎn)為base64方法示例2. 《CSS3實(shí)戰(zhàn)》筆記--漸變?cè)O(shè)計(jì)(一)3. ASP.NET Core自定義中間件的方式詳解4. 教你JS更簡(jiǎn)單的獲取表單中數(shù)據(jù)(formdata)5. CSS3實(shí)現(xiàn)動(dòng)態(tài)翻牌效果 仿百度貼吧3D翻牌一次動(dòng)畫特效6. ASP.NET MVC把數(shù)據(jù)庫(kù)中枚舉項(xiàng)的數(shù)字轉(zhuǎn)換成文字7. html5手機(jī)觸屏touch事件介紹8. 用xslt+css讓RSS顯示的跟網(wǎng)頁(yè)一樣漂亮9. 移動(dòng)端HTML5實(shí)現(xiàn)拍照功能的兩種方法10. 測(cè)試模式 - XSL教程 - 5
