簡體   English   中英

如何保護正在執行的上傳文件夾中的文件

[英]How to protect files in upload folder being executed

我有一個上傳文件夾,用戶可以上傳任何內容,允許所有文件類型...

但有個問題...

如果用戶上傳.php文件,該文件將不會被提供下載,它將被執行,因此如果用戶上傳危險的php文件,刪除文件夾,瀏覽或顯示安全數據,它就會這樣做,所以任何人都可以訪問服務器...

如何保護該文件夾中的執行?

我嘗試使用CHMOD 755獲取該文件夾,但無法上傳文件...

有沒有辦法保護這個沒有PHP腳本或文件類型檢查上傳或其他東西,只是為了阻止在該特定文件夾中執行...

也許用.htaccess或其他什么?

謝謝...

將目錄放在公共www-scope之外,並使用腳本使用file_get_contents或類似方法獲取文件。

我的第一個傾向是說“不要那樣做!”。

但是如果你出於某種原因必須這樣做:將文件上傳到Apache無法訪問的目錄中。 然后編寫一個讀取文件並輸出其內容的腳本。

恕我直言,這仍然是一個壞主意。 這並不妨礙某人使用Javascript向其他用戶做各種令人討厭的事情。

編輯根據您的評論,我在答案中添加了一些內容:

你必須要記住,在網絡上有多層“執行”,實際上它是被解釋的,但我不會爭論語義。 如果Apache服務於您的文件並且它被設計為由Apache解釋,那么Apache將解釋它(通常是腳本語言,如PHP)。 如果您下載了一個旨在由瀏覽器解釋的文件(HTML,Javascript,CSS),它將被瀏覽器和所有與之相關的程序解釋。

如果你不能使用腳本來讀取文件(這只會阻止Apache對它做一些事情),你可以讓你的上傳程序壓縮文件。 這樣,它總是以正確的格式下載。

把它放在文件夾的.htaccess中以禁用PHP:

php_flag engine off

如果你正在使用FastCGI或不使用mod_php

RemoveHandler .php

為什么不過濾php文件? 你真的需要你的用戶上傳php文件嗎? 你可以過濾已知的dangerouns擴展。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM