我爲我的面板項目中的用戶創建一個簡單的PHP雲功能 - 用戶將能夠通過www上傳文件到他的帳戶。我知道一些文件擴展名,如.php等。安全的文件擴展名,同時上傳到服務器
什麼是安全文件擴展名,我可以添加爲允許的?像PNG,JPG,JPEG,TXT,DOCX等
是否值得這個功能添加到我的項目,或者我應該就這麼走了,因爲處理安全問題也不是那麼容易嗎?
我爲我的面板項目中的用戶創建一個簡單的PHP雲功能 - 用戶將能夠通過www上傳文件到他的帳戶。我知道一些文件擴展名,如.php等。安全的文件擴展名,同時上傳到服務器
什麼是安全文件擴展名,我可以添加爲允許的?像PNG,JPG,JPEG,TXT,DOCX等
是否值得這個功能添加到我的項目,或者我應該就這麼走了,因爲處理安全問題也不是那麼容易嗎?
首先,總是存儲在一個與一個htaccess文件保護的非公開目錄中的文件。爲了更好的衡量,只需在存儲文件之前爲每個文件附加一個「安全」文件擴展名(如「.dat」)即可。此外,請確保您檢查的是用戶無法構建一個請求,以某種方式讓他們欺騙您的網站向他們發送他們不應訪問的數據(例如其他用戶的文件,開發和網站)控制文件等)。驗證所有內容 - 不要相信表單輸入,cookies或其他來自其他系統的其他內容。
目前根本沒有這樣的事,作爲一個安全的文件擴展名。文件擴展名主要作爲最終用戶的類型提示,對於大多數軟件程序沒有真正的實際應用。與文件擴展名直接相關的任何可利用的安全載體都來自一個更大的問題,如配置不當的文件系統權限,Web服務器或寫入不良的代碼,並且因此無法通過特定文件擴展名的黑名單來緩解(至遠程文件的上傳涉及)。
在基於NIX *的操作系統上,大多數軟件程序通常依賴於識別文件類型,它們是magic MIME bytes。您可以使用諸如mime_content_type()
或finfo::file()
之類的東西來檢查PHP中文件的MIME類型。
但是,這本身並不是對實際安全性的任何衡量。當我們討論如何使遠程文件上傳安全時,我們正在談論非常廣泛的安全向量,這些向量並不都是圍繞正在上傳的文件進行的。由於文件擴展名完全是用戶提供的數據,因此無論如何都不可信,因此不可能作爲保護任何內容的手段。