我有一個CakePHP應用程序,允許用戶上傳圖像。我目前正在使用版本2.Cakephp圖像安全
我擔心黑客可能會在圖像中嵌入代碼,然後代碼將在服務器上執行。
有誰知道如果使用CakePHP文檔中使用的圖像驗證方法包含安全檢查嗎?
這是一個鏈接,可以更好地提出我所問的問題。 PHP image upload security check list
在此先感謝
我有一個CakePHP應用程序,允許用戶上傳圖像。我目前正在使用版本2.Cakephp圖像安全
我擔心黑客可能會在圖像中嵌入代碼,然後代碼將在服務器上執行。
有誰知道如果使用CakePHP文檔中使用的圖像驗證方法包含安全檢查嗎?
這是一個鏈接,可以更好地提出我所問的問題。 PHP image upload security check list
在此先感謝
您可能需要先正確地闡述你很關心,像這種情況,如何將代碼嵌入在圖像中的服務器上執行?那是什麼樣的代碼?服務器/應用程序對這些圖像做什麼?無論文件內容如何,將它們移動到文件系統當然都不會做任何事情。
CakePHP沒有提供任何驗證功能來檢查二進制圖像數據的完整性/有效性。可能與圖像相關的驗證方法如Validation::mimeType()
只能通過PHP finfo_*
或mime_content_type
函數進行非常基本的文件頭檢查。
即使CakePHP驗證圖像數據結構,人們仍然可以通過元數據嵌入各種東西,例如,如果有人設法在正確的上下文中包含圖像,可能會執行嵌入的代碼。
正如先前提到的,首先評估威脅,然後確定適當的防禦機制。如果您需要比CakePHP內置驗證提供的更高的安全性,那麼您可能需要處理圖像和溝/過濾元數據。然而,即使是可以被利用,適當製作的PNG IDAT塊例如甚至可能存活的過程像尺寸/重新採樣:
https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/
嗨, 首先,我會鏈接到感謝您抽出寶貴的時間特別是有這樣一個詳細的答覆。至於什麼代碼在服務器上執行,我不確定,但我一直在網上閱讀,我遇到一篇文章,提到PHP代碼可以嵌入到圖像的標題,一旦上傳代碼可以執行,雖然我不確定如果這是嚴格的PHP或者其他語言可以使用。 –
我有一個表單,允許圖像上傳到我的服務器上第一次上傳,他們被放置在tmp文件夾,然後使用PHP move_uploaded_file函數被移動到另一個位置。我有另一個應用程序也構建在PHP中,在網頁上顯示圖像。 我的擔心是,如果有人管理在標題中嵌入一些PHP代碼,然後在顯示圖像時執行該代碼。當談到這種攻擊時,我是一個初學者,並且讚賞正確的方向。 –
@DavidSimpson除非存在任何特定的漏洞(例如在用於圖像處理的庫中),否則此類嵌入式代碼通常只會在圖像包含在PHP上下文中時執行(例如'include'image.jpg'' ,或者如果有人設法控制目標文件名,並且它是可公開訪問的,即,如果它以'* .php'的形式存在的話)。如前所述,MIME類型檢查,甚至圖像類型檢查(例如'getimagesize()')都可能被欺騙,所以如果需要更好的保護,則需要處理圖像或查找可以執行適當圖像數據的庫驗證。 – ndm