Re: [請益] 檔案上傳的安全問題
※ 引述《knives ()》之銘言:
: 如果我要做圖片上傳的功能
: 可是如果只是單純分析副檔名
: 但是要是有心人將副檔名改成.jpg但是其實是.php的檔案
: 這樣在開啟圖片的時候,不就會執行php的程式
: 有沒有辦法可以避掉這個後門
: 比方說檢查上傳檔案是否真的為圖片或是
: 有沒有辦法在http server設定說在上傳檔案的目錄下,禁止執行任何程式
除了推文說的方式,印象中好像有設定禁止執行程式的目錄的設定。
不過我不清楚,也用不到。
以我對於 PHP 的理解,是不會有 「偽 .jpg」被作為 PHP 執行的情形。
PHP 執行的流程,是 Server在收到要求,對於對應的 PHP 程式碼進行編譯、
執行,最後輸出回應。這個時候,副檔名不是最重要的,可以由設定作修改。
(個人有一次就把一個 PHP 偽裝成 .asp,因為有人給錯網址... = =a)
經由 include 或 requre 函數引用的檔案,會被當作 PHP 程式來解析。
有些人會把這類檔案以 .inc 的方式儲存,並限制不得被讀取,
以避免被獨立執行,這些檔案通常是作為「函數庫」來使用。
不過,你不會沒事拿副檔名是 .jpg 的檔案作 include 動作吧!!
二進位的檔案,想必不能解析,只會出現錯誤。
圖片能夠顯示,是在瀏覽器接到 HTML 回應(已經和是不是用 PHP 無關了)後,
依裡面所帶有的網址取得圖片,所以 .jpg 會直接被"下載",瀏覽器再進行處理。
傳 PHP 程式碼的 .jpg 檔案,只會讓瀏覽器顯示不出來, Server 不會掛掉。
我認為這不算是"後門"吧! 如果有錯的話,麻煩指教。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.92.131
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章
0
18