PHP安全程式設計之主機檔案目錄瀏覽

2021-07-16 12:27:39 字數 801 閱讀 2607

除了能在共享伺服器上讀取任意檔案之外,攻擊者還能建立乙個可以瀏覽檔案系統的指令碼。由於你的大多數敏感檔案不會儲存在**主目錄下,此類指令碼一般用於找到你的原始檔的所在位置。請看下例:

<?php  

if (isset($_get['dir']))  

elseif (isset($_get['file']))  

else  

function cat($file)  

function ls($dir)  

else  

if (is_readable("$dir$filename"))  

else  

echo "$line\n";  

}  $handle->close();  

}  ?>  

攻擊者可能會首先察看/etc/passwd檔案或/home目錄以取得該伺服器上的使用者名稱清單;可以通過語言的結構如include或require來發現儲存在**主目錄以外的原始檔所在位置。例如,考慮一下下面的指令碼檔案/home/victim/public_html/admin.php:

<?php  

include '../inc/db.inc';  

/* ... */  

?>  

如果攻擊者設法顯示了該檔案的原始碼,就可以發現db.inc的所在位置,同時他可以使用readfile()函式來使其內容暴露,取得了資料庫的訪問許可權。這樣,在這個環境中儲存db.inc於**主目錄之外的做法並未起到保護作用。

這一攻擊說明了為什麼要把共享伺服器上的所有原始檔看成是公開的,並要選擇資料庫實現所有敏感資料的儲存。

PHP安全程式設計之PHP的安全模式

php的safe mode選項的目的是為了解決本小節前後所述的某些問題。但是,在php層面上去解決這類問題從架構上來看是不正確的,正如php手冊所述 當安全模式生效時,php會對正在執行的指令碼所讀取 或所操作 檔案的屬主進行檢查,以保證與該指令碼的屬主是相同的。雖然這樣確實可以防範本章中的很多例子...

PHP安全程式設計之開啟遠端檔案的風險

php有乙個配置選項叫allow url fopen,該選項預設是有效的。它允許你指向許多態別的資源,並像本地檔案一樣處理。例如,通過讀取url你可以取得某乙個頁面的內容 html contents file get contents 當被汙染資料用於include和require的檔案指向時,會產...

linux程式設計之檔案與目錄

有興趣的朋友可以訪問我的 檔案有關的資訊結構 struct stat 檔案型別 linux系統中的常見檔案型別有 普通檔案 目錄檔案 字元特殊檔案 提供對裝置不帶緩衝的訪問 塊特殊檔案 提供對裝置帶緩衝的訪問 fifo檔案 用於程序間的通訊,命名管道 套介面檔案 用於網路通訊 檔案型別的判斷 使用如...