我的preg_replace類似的東西.php.jpg,.php.png, .js.jpg,.js.png,在爲了安全起見,上傳的文件(圖像)的名稱,並希望知道是否有任何擴展名,我應該考慮在上傳完成後將文件移動到相應的文件夾之前進行替換?如果上傳的圖片的名稱中包含.php.jpg
回答
單看文件名並不是防止惡意代碼/可執行文件上傳的安全方法。
根據您接受上傳文件的類型,有更好的方法來保證安全。
一般來說從來沒有上傳任何地方從網絡公開訪問的任何文件,直到你知道100%,他們沒有任何懷疑。
如果允許圖片上傳 - 使用服務器端技術,如GD或ImageMagick的使用它之前重新保存的文件出來。如果這些工具無法從已上傳的內容中加載有效圖像(捕獲錯誤,所以您知道......),則可以刪除或隔離文件,直到您手動調查爲止。
在任何情況下,絕不將文件存儲在原來的文件名與換出擴展甚至上傳/替換。
搜索上傳安全的網站,瞭解一些更詳細的提示 - 這個問題拿出合理不經常。
如果我通過chmod()設置文件訪問權限,我看不到任何權限更改。如果我通過fileperms()在更改之前和更改之後回顯權限模式,則值相同。 Ajax響應文本包含相同的值 - 33206.這是否意味着此文件的權限沒有更改,還是與我目前正在Windows環境中測試腳本有關? – user1190478
根據您需要的文件做什麼有可能隱窩或只是運行上的文件一個gzip。在那裏你節省了服務器的空間,如果有人上傳腳本文件,他們不能通過http請求運行。我想要的是檢查是否有任何公共訪問和/或建立一個htaccess文件。
如何做到這一點? – user1190478
爲PHP那裏我zlib,你可以使用,我認爲對於htaccess文件很多教程在互聯網上 – xasz
簡短的回答,肯定有,你也應該考慮封鎖,如果你打算使用一個黑名單的做法,像「PHTML」,「Java的」,「perl的」,「PY」,「ASP許多其他可執行文件擴展名','去',你應該考慮可以提供惡意軟件的exe和bat以及其他人。
但是,如果您要完全阻止移動它們(或者可能甚至在您到達更復雜的部分之前作爲表單驗證進行上載),我只會使用黑名單,而不是如果要上傳並改變移動中的名字。無論你是否想要一些未知的Java或Go或Python等坐在你的服務器上,而不管它是什麼,甚至你不在Apache上(這可以讓你把可執行擴展放在最後一段以外的地方)。爲什麼要允許上傳進行?它可以更簡單(你會看到人們推薦),但不允許3 +級別的名稱,但有三個級別名稱的合法用途,如語言識別。然而,這種方法本身並不能保證您不會受到可執行代碼的影響。這需要成爲您儘可能安全地上傳文件的一大組內容的一部分(例如您還想檢查圖像文件以獲取嵌入代碼)。
感謝您的答案。我已經寫了腳本,它會重命名每個圖像,給它一個唯一的名稱,然後纔會移動到相應的目錄。 如何檢查嵌入代碼? – user1190478
你可以看看Joomla爲此做了什麼, https://github.com/joomla/joomla-cms/blob/staging/libraries/cms/helper/media.php#L190 – Elin
謝謝@Elin。它真的幫助了我! – user1190478
- 1. 取文件的名稱/圖片上傳
- 2. PHP上傳圖片,上傳,如果文件中包含什麼病毒
- 3. php - 表單包含圖片上傳
- 4. fineuploader圖片上傳包含標題與上傳的文件
- 5. PHP使用md5名稱上傳圖片
- 6. 根據名稱上傳圖片在PHP
- 7. 上傳時更改圖片名稱
- 8. 如果計算機名稱包含
- 9. 包含名稱
- 10. 已上傳的圖片未包含在項目中
- 11. 什麼是處理上傳圖片名稱的「傳統」方式?
- 12. GetPackageName包含上下文的類名稱
- 13. 批次:轉到EOF如果名稱中包含的部分字
- 14. 包含com.tbf.xml.XmlParser的jar名稱
- 15. 如何將ImageView中的圖片與僅包含圖片名稱的數據庫結合使用?
- 16. javascript foreach返回結果包含名稱
- 17. 爲圖片上傳的網站創建獨特的圖片名稱哈希
- 18. 如何從URL中不包含圖片擴展名的圖片擴展名中獲取圖片擴展
- 19. 如果我有一個包含名稱的列表,如FIrstName.LastName
- 20. 圖片中包含上載後失誤
- 21. 多個圖片上傳後的唯一名稱
- 22. 使用文件phonegap插件上傳的圖片名稱「image%A3456」
- 23. 入門上傳的圖片名稱到一個數據庫
- 24. 文件名圖片上傳
- 25. 重命名上傳圖片
- 26. 在R中包含NAs的列名稱
- 27. 上傳圖片的路徑進入該文件夾的名稱數據庫,並上傳圖片
- 28. 在xcode中查找包含圖像名稱的圖像
- 29. 在未轉換查詢的結果中包含列名稱
- 30. 在Oracle SQL查詢的結果中包含列名稱?
什麼是試圖用這個替換完成? –
要排除在文件上傳後將文件作爲php文件運行的可能性。 – user1190478
[上傳安全威脅]的可能重複(http://stackoverflow.com/questions/11061355/security-threats-with-uploads) – deceze