將在文件上調用getimagesize()
並檢查返回的值是否與false
不一樣足以確定文件是否爲圖像?使用getimagesize()來確定文件是否爲圖像
是否有任何其他的可能性來確定文件是否是一個圖像在PHP中,解決方案比簡單地檢查擴展更簡單。
將在文件上調用getimagesize()
並檢查返回的值是否與false
不一樣足以確定文件是否爲圖像?使用getimagesize()來確定文件是否爲圖像
是否有任何其他的可能性來確定文件是否是一個圖像在PHP中,解決方案比簡單地檢查擴展更簡單。
找到它是否是支持的文件格式之一就足夠了,是的。它實際上解析了文件的頭部字節,因此非常可靠。
這是內置於PHP中的最佳方法。
像ImageMagick'sidentify
命令進階工具基本上是相同的 - 認爲他們只有當你需要支持更多的文件格式比由getimagesize()
支持(他們的名單是here,在IMAGETYPE_*
常量)。
getimagesize()是一個非常可靠的指示,該文件是一個圖像,是的。
它將確定圖像是否顯示有效標題。
它(通常)不會確定實際圖像數據是否存在任何損壞,這可能通過加載圖像顯示爲混亂圖像或部分錯誤。
您還可以記住,文件可以是有效的圖像文件,但也可以隱藏其他數據 - 無論是在元數據,圖像數據還是在圖像數據結束之後。因此,雖然getimagesize()可能會告訴您有一個有效的圖像,但這並不一定意味着該文件也不是另一種類型。由於JAR和ZIP文件從文件末尾讀取,文件可能是有效的圖像和有效的JAR/ZIP文件,並且JAR文件可在瀏覽器中執行 - 這是GIFAR exploit的基礎。
感謝您對GIFAR漏洞利用的關注,不知道那個! – ChrisR