2011-10-02 25 views
1

「最重要的保護措施是將上傳的文件保存在用戶無法直接通過直接URL訪問的位置,這可以通過將上傳的文件存儲在Web根目錄之外或配置網絡服務器拒絕訪問上傳目錄上傳文件安全>>限制名稱和擴展名不夠? (無法重命名或移動文件)

另一個重要的安全措施是使用系統生成的文件名而不是用戶在文件系統上存儲文件時提供的名稱,這將防止本地文件包含攻擊而且用戶不可能」

我明白了這一點,但是做任何類型的文件名操縱的 - 我提供的選項WordPress用戶將文件上傳到自己的形象目錄,所以我不能t做這些afaik中的任何一個。這些文件需要進入images目錄,並命名爲他們選擇的名稱。

這裏是我到目前爲止做:

1)只允許用一個擴展名的文件,並且擴展名必須是從信任列表中。

2)只允許名稱的第一部分包含字母數字,空格和下劃線,並且少於30個字符。

3)不允許與名爲.htaccess要上載的文件

4)僅允許上載管理員訪問並使用WP隨機數

5)檢查mime類型

6)檢查文件大小

一些問題我已經是:

如果我否認上傳名爲」的.htaccess'的任何文件和我否認任何文件有ith .php擴展名,不應該阻止某人上傳嵌入了.php代碼的圖像文件嗎?

我明白,我可以使用PHP沒有惡意代碼複製圖像,但我打算允許的.ttf文件和.css文件上傳也是如此。

我可以掃描這些文件與PHP腳本問號等,這是明智的?如果是的話,我會在這之外尋找什麼?

如果我只允許管理員訪問並使用隨機數和上述方法時許,如何安全是我的代碼,並是他們認爲我應該做其他事情?

任何幫助,非常感謝!

回答

0

我想我會碰到這個 - 在這裏很難找到很多反饋。

如果你的文件名進行徹底清理,只有白名單中的圖片,文字和css文件,做什麼樣的安全是買你的。

目前,我作爲隨機名稱上傳到目錄中,清理名稱,一個擴展名,白名單並重新保存在公共圖像目錄中。並且只允許wp管理員訪問。

0

您應該在images目錄中禁用PHP執行。這樣可以避免很多潛在的問題,而不必擔心錯過了一些棘手的文件名結構。將php_flag engine off添加到該目錄的apache配置。

除非您確實需要它們,否則您應該禁用.htaccess文件,至少在images目錄中。您可以在.htaccess文件中執行的所有操作都可以在任何可能由Web服務器寫入的目錄之外的apache配置文件中完成。請參閱AllowOverride指令。

+0

感謝您的支持。我將代碼作爲wp主題的擴展功能進行分發。我將不得不要求我的用戶這樣做?我的意思是這不能以編程方式完成,對嗎? – gregpress