PHP安全-重播攻擊
重播攻擊,有時稱為演示攻擊,即攻擊者重現以前合法用戶向服務器所發送的數據以獲取訪問權或其它分配給該用戶的權限。
與密碼嗅探一樣,防止重播攻擊也需要你意識到數據的暴露。為防止重播攻擊,你需要加大攻擊者獲取任何用于取得受限資源的訪問權限的數據的難度。這主要要求做到避免以下做法:
設定受保護資源永久訪問權的數據的使用;
設定受保護資源訪問權的數據的暴露(甚至是只提供臨時訪問權的數據);
這樣,你應該只使用設定受保護資源臨時訪問權的數據,同時你還要盡力避免該數據泄露。這些雖只是一般的指導原則,但它們能為你的運作機制提供指導。
第一個原則據我所知,違反它的頻率已達到了令人恐怖的程度。很多開發人員只注意保護敏感數據暴露,而忽視了用于設定受保護資源永久訪問權的數據在使用時引發的風險。
例如,考慮一下用本地腳本計算驗證表單密碼的hash值的情況。這樣密碼的明文不會暴露,暴露的只是它的hash值。這就保護了用戶的原始密碼。這個流程的主要問題是重播漏洞依然如故——攻擊者可以簡單的重播一次合法的驗證過程即可通過驗證,只要用戶密碼是一致的,驗證過程就會成功。
更安全的運行方案、MD5的JavaScript源文件以及其它算法,請看http://pajhome.org.uk/crypt/md5/。
類似于對第一原則的違反是指定一個cookie以提供對某一資源的永久訪問權。例如,請考慮下面的通過設定cookie運行的一個永久訪問機制的嘗試:
CODE:
<?php
$auth = $username . md5($password);
setcookie(’auth’, $cookie);
?>
如果一個未驗證用戶提供了一個驗證cookie,程序會檢查在cookie中的密碼的hash值與存在數據庫中的密碼的hash是否匹配。如果匹配,則用戶驗證通過。
本流程中的問題是該驗證cookie的暴露是一個非常大的風險。如果它被捕獲的話,攻擊者就獲得了永久訪問權。盡管合法用戶的cookie可能會過期,但攻擊者可以每次都提供cookie以供驗證。請看圖7-2中對這種情形的圖示。
一個更好的永久登錄方案是只使用設定臨時訪問權的數據,這也是下一節的主題。
相關文章:
1. React+umi+typeScript創建項目的過程2. ASP中常用的22個FSO文件操作函數整理3. 解決ASP中http狀態跳轉返回錯誤頁的問題4. ASP調用WebService轉化成JSON數據,附json.min.asp5. 三個不常見的 HTML5 實用新特性簡介6. ASP編碼必備的8條原則7. SharePoint Server 2019新特性介紹8. 無線標記語言(WML)基礎之WMLScript 基礎第1/2頁9. ASP.NET Core 5.0中的Host.CreateDefaultBuilder執行過程解析10. Warning: require(): open_basedir restriction in effect,目錄配置open_basedir報錯問題分析
