我有一個奇怪的問題$_GET
方法。我有一個PHP代碼:
$fopen("files/" . $_GET['file'], "r");
當我寫文件路徑參數我的自我它的運行很好,但是當我從$ _GET方法來獲取文件名就說明了我一些錯誤,如路徑是錯誤的。
- 它有什麼問題?
- 是否有
$_GET
方法的任何特殊編碼將其解碼爲正確的字符串樣式。我試過urldecode,但沒有做任何改變。
我有一個奇怪的問題$_GET
方法。我有一個PHP代碼:
$fopen("files/" . $_GET['file'], "r");
當我寫文件路徑參數我的自我它的運行很好,但是當我從$ _GET方法來獲取文件名就說明了我一些錯誤,如路徑是錯誤的。
$_GET
方法的任何特殊編碼將其解碼爲正確的字符串樣式。我試過urldecode,但沒有做任何改變。不要經常使用用戶輸入而無需驗證,尤其是不能在主機上打開文件!我無法誇大這是多麼危險。如果某人在應用程序中輸入了值爲'../../../../../etc/password'的GET字符串,該怎麼辦?
我陷入了困境。你是對的。我不知道爲什麼我這樣做,而我有我的數據庫中存儲的變量,可以用來獲取文件ID和下一個...感謝無論如何,你們所有人! – MahanGM 2011-04-13 16:37:05
在底部說:
可能還有更多。它也取決於你使用的系統(Win,Unix,Mac ..)。
這應該是對問題的評論,而不是回答。 – Treffynnon 2011-04-13 13:42:02
嗨,我意識到,但我沒有看到添加註釋按鈕的問題。我是盲人還是ff 4不喜歡stackoverflow? :-) – Bery 2011-04-13 13:47:58
@Bery Naah。你只是沒有足夠的聲譽。 – Emmerman 2011-04-13 13:52:38
第一條規則是消毒您的輸入。像這樣使用$ _GET只是要求麻煩。 做正確的事情。將$ _GET值放入一個變量中,確認它是有效的輸入,然後嘗試打開文件。
你知道,你指出了一個好東西,我會解決它。順便說一下,我驗證了我的數據,它確實是正確的。 – MahanGM 2011-04-13 16:32:42
你是否試圖打印你得到的? – 2011-04-13 13:40:25
(a)您使用什麼URL來查看頁面? (b)'var_dump($ _ GET);'顯示了什麼?還要注意,$ _GET不是一種方法,它是一個變量,特別是PHP的[Superglobals](http://php.net/manual/en/language.variables.superglobals.php)之一。 – 2011-04-13 13:41:01
'echo「文件/」。 $ _GET ['file'];'向我們展示結果 – Emmerman 2011-04-13 13:41:34