PHP安全-重播攻擊
重播攻擊,有時(shí)稱為演示攻擊,即攻擊者重現(xiàn)以前合法用戶向服務(wù)器所發(fā)送的數(shù)據(jù)以獲取訪問權(quán)或其它分配給該用戶的權(quán)限。
與密碼嗅探一樣,防止重播攻擊也需要你意識(shí)到數(shù)據(jù)的暴露。為防止重播攻擊,你需要加大攻擊者獲取任何用于取得受限資源的訪問權(quán)限的數(shù)據(jù)的難度。這主要要求做到避免以下做法:
設(shè)定受保護(hù)資源永久訪問權(quán)的數(shù)據(jù)的使用;
設(shè)定受保護(hù)資源訪問權(quán)的數(shù)據(jù)的暴露(甚至是只提供臨時(shí)訪問權(quán)的數(shù)據(jù));
這樣,你應(yīng)該只使用設(shè)定受保護(hù)資源臨時(shí)訪問權(quán)的數(shù)據(jù),同時(shí)你還要盡力避免該數(shù)據(jù)泄露。這些雖只是一般的指導(dǎo)原則,但它們能為你的運(yùn)作機(jī)制提供指導(dǎo)。
第一個(gè)原則據(jù)我所知,違反它的頻率已達(dá)到了令人恐怖的程度。很多開發(fā)人員只注意保護(hù)敏感數(shù)據(jù)暴露,而忽視了用于設(shè)定受保護(hù)資源永久訪問權(quán)的數(shù)據(jù)在使用時(shí)引發(fā)的風(fēng)險(xiǎn)。
例如,考慮一下用本地腳本計(jì)算驗(yàn)證表單密碼的hash值的情況。這樣密碼的明文不會(huì)暴露,暴露的只是它的hash值。這就保護(hù)了用戶的原始密碼。這個(gè)流程的主要問題是重播漏洞依然如故——攻擊者可以簡(jiǎn)單的重播一次合法的驗(yàn)證過程即可通過驗(yàn)證,只要用戶密碼是一致的,驗(yàn)證過程就會(huì)成功。
更安全的運(yùn)行方案、MD5的JavaScript源文件以及其它算法,請(qǐng)看http://pajhome.org.uk/crypt/md5/。
類似于對(duì)第一原則的違反是指定一個(gè)cookie以提供對(duì)某一資源的永久訪問權(quán)。例如,請(qǐng)考慮下面的通過設(shè)定cookie運(yùn)行的一個(gè)永久訪問機(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)證通過。
本流程中的問題是該驗(yàn)證cookie的暴露是一個(gè)非常大的風(fēng)險(xiǎn)。如果它被捕獲的話,攻擊者就獲得了永久訪問權(quán)。盡管合法用戶的cookie可能會(huì)過期,但攻擊者可以每次都提供cookie以供驗(yàn)證。請(qǐng)看圖7-2中對(duì)這種情形的圖示。
一個(gè)更好的永久登錄方案是只使用設(shè)定臨時(shí)訪問權(quán)的數(shù)據(jù),這也是下一節(jié)的主題。
相關(guān)文章:
1. 詳解Android studio 動(dòng)態(tài)fragment的用法2. 基于android studio的layout的xml文件的創(chuàng)建方式3. 解決Android studio xml界面無法預(yù)覽問題4. 編程語言PHP在Web開發(fā)領(lǐng)域的優(yōu)勢(shì)在哪?5. 圖文詳解vue中proto文件的函數(shù)調(diào)用6. Spring Boot和Thymeleaf整合結(jié)合JPA實(shí)現(xiàn)分頁(yè)效果(實(shí)例代碼)7. Android如何加載Base64編碼格式圖片8. 什么是python的自省9. Vue封裝一個(gè)TodoList的案例與瀏覽器本地緩存的應(yīng)用實(shí)現(xiàn)10. Springboot Druid 自定義加密數(shù)據(jù)庫(kù)密碼的幾種方案

網(wǎng)公網(wǎng)安備