2012-11-24 58 views
0

我有一項服務,允許用戶上傳任何他們想要的東西。我有代碼執行和其他人被禁用,但我找不到一種方法來阻止他們上傳的.htaccess文件執行。防止子目錄中的.htaccess文件被執行

+0

開頭的是用php編碼的上傳腳本? – Dale

+0

htaccess文件不執行。它們是被動文件,具有服務器永久讀取的一組規則。所以,你不能阻止他們的執行。不過,您應該阻止他們上傳。 –

+0

@FelipeAlamedaA其實你可以使「無用」。看到我的回答 –

回答

0

你應該總是重命名用戶上傳的文件!如果你不這樣做,用戶可以很容易地上傳hack.php,然後啓動它,讓你的網站被黑客或濫用。所以這實際上是你的問題。

上傳後重命名文件。在數據庫中保留原始名稱(以及尺寸,MIME類型等),並通過腳本將路線文件下載/查看,該腳本將從數據庫中獲取原始名稱,併爲用戶構建適當的標題,然後生成該文件的內容。這將阻止文件在您的服務器上執行

或者如果這只是.htaccess的問題(但我敢說這是更廣泛的),那麼您可以配置Apache以忽略某些目錄中的.htaccess。它需要機器上的root權限,但您可以將<Directory FOLDER>塊添加到主機配置中,並將其放入AllowOverride None

或者,只需在上傳時檢查目標文件名並拒絕任何.htaccess.htpassword。或者任何名稱以.

+0

不允許執行PHP和其他正常執行的文件。我只是想知道如何禁用Apache檢查他們的.htaccess文件。 –

+0

是的,你可以配置apache在某些目錄中忽略.htaccess。它需要機器上的root權限,然後添加''塊並將'AllowOverride None'放入其中。 –

+0

我可以告訴它忽略除根目錄中的.htaccess之外的所有.htaccess嗎? –