考慮用PHP編寫的一個簡單的文件上傳系統。用戶只能在管理面板中訪問。 (不是FTP)。出於安全問題,他可能會將文件夾選項從707更改爲755。 這怎麼辦?我們可以通過上傳腳本來做到嗎?如果是,這是一個安全的應用程序?文件系統和安全(PHP)
回答
您可以使用chmod了點。每個文件系統操作有一個正在運行的風險,所以考慮的是,用戶可能試圖改變另一個文件的權限,以便有來淨化輸入。
bool chmod ( string $filename , int $mode )
試圖改變 指定文件的模式,在模式給出。
它看起來像你不理解的方式Web服務器的作品。它只有一個system user
ans,不需要更改site users
的任何權限。
要實現的ACL功能,一個需要一個數據庫來保存用戶和權利,以及一些手工下載方法的實現,一個簡單的(正確的頭+ ReadFile的())或更復雜的解決方案之一,喜歡的nginx的x_accel_redirect
用戶可以上傳圖片添加到文章。怎麼樣的文件夾chmod這種情況?該文件夾可能始終在707?那安全呢? – Felicita 2010-05-22 11:04:37
@Fel權限必須設置爲使網站正常工作。而依賴於服務器的設置,而不是想象的「安全問題」 – 2010-05-22 11:06:36
在上傳腳本中,我們不能這樣做,這是不是一種安全的方式任何一個可以破解它。 我只能通過ftp通過chmod來上傳頁面代碼。
此腳本刪除所有的髒東西,並檢查從directory.If文件是存在於DIR那麼結果將是真實的,否則一個黑客攻擊的白名單文件
function WhitePage($page) {
$info2 = apache_lookup_uri('src/index.php?p=' . $page);
list($arg, $val) = explode("=", $info2->args);
$myrequest = basename(htmlspecialchars_decode($val));
return $myrequest;
}
function Read_Dir($dir, $array = array()) {
$dh = opendir($dir);
$files = array();
while (($file = readdir($dh)) !== false) {
$flag = false;
if ($file !== '.' && $file !== '..' && !in_array($file, $array)) {
$files[] = trim($file);
}
}
return $files;
}
function WhiteList($page = null) {
$info2 = apache_lookup_uri('src/index.php?p=' . $page);
list($arg, $val) = explode("=", $info2->args);
// basename from the std class
$myrequest = basename(htmlspecialchars_decode($val));
$myrequest = trim($myrequest . '.php');
//pathinfo from the std class
$path = pathinfo($info2->filename);
// get the files array
$whitefiles = Read_Dir($path['dirname']);
if (in_array($myrequest, $whitefiles, true)) {
$res = 1;
} else {
$res = 0;
}
return $res;
}
// this is solution of this kind of the problems
//$p='index.php?p=../../../../../../../../etc/passwd%00index.html';
$p = '../../../../../../../../etc/passwd%00index.html';
$p = WhitePage($p);
$result = WhiteList($p);
if ($result) {
echo 'ok';
} else {
echo 'Die ,You evil hacker';
}
此腳本刪除所有的髒東西,並檢查從directory.If文件是存在於DIR那麼結果將是真實的,否則黑客企圖 – 2012-09-03 15:05:23
白名單文件嗨lehal2,你應該編輯你的答案,而不是添加評論,這樣對接下來看到你的答案的人更加明顯。 – 2012-09-23 19:44:37
- 1. PHP用戶系統安全
- 2. PHP登錄系統。安全?
- 3. PHP文件系統操作安全問題
- 4. 安全地允許PHP讀寫系統文件
- 5. 安全:限制插件訪問文件系統和網絡
- 6. php上傳系統的安全含義
- 7. 安全的PHP登錄系統?
- 8. PHP mysql_query登錄系統安全
- 9. 安全的PHP身份驗證系統
- 10. 一個安全的php評論系統
- 11. 分層文件系統和卷安裝
- 12. SAP BASIS - 系統管理和安全
- 13. PHP文件 - 安全
- 14. 安全PHP文件
- 15. 安裝文件系統
- 16. 系統安全拋出:SecurityException
- 17. 餅乾系統 - 安全
- 18. 安全系統的優化
- 19. 定製'安全'的PHP和MySQL用戶登錄會話系統
- 20. 安全沙盒違例 - 加載文件系統和網絡SWF文件
- 21. PHP文件管理系統
- 22. PHP文件上傳系統
- 23. 全文數據庫搜索和文件系統附件
- 24. 如何讓linux文件系統斷電安全?
- 25. 什麼是「系統組」?是否有詳細的安全文件?
- 26. 列舉文件系統時刪除或移動安全嗎?
- 27. 將文件上傳到系統的安全問題
- 28. 如何使一個Ruby字符串安全的文件系統?
- 29. IE9本地文件系統安全防止js執行
- 30. Android文件系統中的安全路徑?
做什麼用戶你指的是?網站所有者或網站用戶? – 2010-05-22 11:11:23
chmod中的最後一個數字是全局訪問權限,擁有7或5可以讓機器上的每個人訪問您的文件。你需要chmod 700,不應該讓你的朋友給你安全建議。 – rook 2010-05-22 18:39:45