一般我只檢查尾碼名,
比如上傳abc.jpg,最後放在/xxx/xxx.jpg
但是今天看見一篇文章
原理是一段代碼製作成JPG圖片,然後上傳。
這時就執行代碼?
我百度了很久找到的都是10年前的資料,而且好像這個東西跟ASP相關的?
我想問這個PHP是否也有這個漏洞?
檔案上傳時只檢查尾碼是否安全?
回複討論(解決方案)
php也一樣,上傳以後,最好先判斷是否是真實的圖片檔案,然後弄個透明浮水印上去,相當於“破壞”原圖
php也一樣,上傳以後,最好先判斷是否是真實的圖片檔案,然後弄個透明浮水印上去,相當於“破壞”原圖
如何判斷
加浮水印暫時沒有這個考慮
不安全...
一般我只檢查尾碼名,
比如上傳abc.jpg,最後放在/xxx/xxx.jpg
但是今天看見一篇文章
原理是一段代碼製作成JPG圖片,然後上傳。
這時就執行代碼?
我百度了很久找到的都是10年前的資料,而且好像這個東西跟ASP相關的?
我想問這個PHP是否也有這個漏洞?
檔案上傳時只檢查尾碼是否安全?
php也一樣,上傳以後,最好先判斷是否是真實的圖片檔案,然後弄個透明浮水印上去,相當於“破壞”原圖
如何判斷
加浮水印暫時沒有這個考慮
百度就有啊。。。
原來還有這樣的問題啊。。長見識了!
不安全...
應該檢查哪些項目?
百度就有啊。。。
getimagesize?
if (preg_match('/<\?php|eval|POST|base64_decode|base64_encode/i', @file_get_contents($_FILES['uploadfile']['tmp_name']), $m_err)) {
die('提示!禁止提交。該圖片含有禁止的代碼'.str_replace('?', '\?', $m_err[0]).'。');
}
if (preg_match('/<\?php|eval|POST|base64_decode|base64_encode/i', @file_get_contents($_FILES['uploadfile']['tmp_name']), $m_err)) {
die('提示!禁止提交。該圖片含有禁止的代碼'.str_replace('?', '\?', $m_err[0]).'。');
}
能不能給個簡單的圖片試一下,比如執行
1.你把所有存放圖片的目錄許可權都設為“可讀可寫不可執行”,包括臨時存放的目錄也是
2.檢查是否真實圖片,jpg等要切尾,切尾就是瞭解圖片格式,把圖片尾段“額外”的位元組扔掉,搜尋一下能找到相關文章
基本做好這兩點就相對安全了,尤其第一點相當重要