PHP安全-重播攻擊
重播攻擊,有時(shí)稱(chēng)為演示攻擊,即攻擊者重現(xiàn)以前合法用戶(hù)向服務(wù)器所發(fā)送的數(shù)據(jù)以獲取訪問(wèn)權(quán)或其它分配給該用戶(hù)的權(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á)到了令人恐怖的程度。很多開(kāi)發(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ù)了用戶(hù)的原始密碼。這個(gè)流程的主要問(wèn)題是重播漏洞依然如故——攻擊者可以簡(jiǎn)單的重播一次合法的驗(yàn)證過(guò)程即可通過(guò)驗(yàn)證,只要用戶(hù)密碼是一致的,驗(yàn)證過(guò)程就會(huì)成功。
更安全的運(yùn)行方案、MD5的JavaScript源文件以及其它算法,請(qǐng)看http://pajhome.org.uk/crypt/md5/。
類(lèi)似于對(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)證用戶(hù)提供了一個(gè)驗(yàn)證cookie,程序會(huì)檢查在cookie中的密碼的hash值與存在數(shù)據(jù)庫(kù)中的密碼的hash是否匹配。如果匹配,則用戶(hù)驗(yàn)證通過(guò)。
本流程中的問(wèn)題是該驗(yàn)證cookie的暴露是一個(gè)非常大的風(fēng)險(xiǎn)。如果它被捕獲的話,攻擊者就獲得了永久訪問(wèn)權(quán)。盡管合法用戶(hù)的cookie可能會(huì)過(guò)期,但攻擊者可以每次都提供cookie以供驗(yàn)證。請(qǐng)看圖7-2中對(duì)這種情形的圖示。
一個(gè)更好的永久登錄方案是只使用設(shè)定臨時(shí)訪問(wèn)權(quán)的數(shù)據(jù),這也是下一節(jié)的主題。
相關(guān)文章:
1. Python如何批量生成和調(diào)用變量2. ASP.NET MVC實(shí)現(xiàn)橫向展示購(gòu)物車(chē)3. ASP.Net Core對(duì)USB攝像頭進(jìn)行截圖4. .net如何優(yōu)雅的使用EFCore實(shí)例詳解5. ASP.Net Core(C#)創(chuàng)建Web站點(diǎn)的實(shí)現(xiàn)6. python 爬取京東指定商品評(píng)論并進(jìn)行情感分析7. python基礎(chǔ)之匿名函數(shù)詳解8. Python獲取B站粉絲數(shù)的示例代碼9. ajax動(dòng)態(tài)加載json數(shù)據(jù)并詳細(xì)解析10. 通過(guò)CSS數(shù)學(xué)函數(shù)實(shí)現(xiàn)動(dòng)畫(huà)特效
