2015-02-06 76 views
0

我離開我的網站容易受到攻擊,因爲不過濾頭中的數據重定向?把頭文件()中的unsanitized數據放入函數

例如:

$foo = $_GET['foo']; 

header("Location: /bar.php?foo=$foo"); 

die(); 

如果答案是肯定的,什麼類型的攻擊是他們,而只是逃避與ヶ輛的數據可行的解決方案?

$foo = $_GET['foo']; 

$foo = htmlentities($foo); 

header("Location: /bar.php?foo=$foo"); 

die(); 
+2

'htmlentities'不會「清除」任何東西;它只是編碼在HTML中具有特殊含義的字符。*由於這裏沒有涉及HTML,所以這是非常沒有意義的。事實上,你可能會變得更糟,因爲HTML實體是用'&..'編碼的,'&'在URL中有它自己的特殊含義。請閱讀[偉大的逃避現實(或:你需要知道如何處理文本中的文本)](http://kunststube.net/escapism/) – deceze 2015-02-06 00:56:59

+0

加上我可以想出一些基於你所提供的重定向原因。聽你只會有一定數量的頁面重定向到,做一些像'switch()',並確保你完全控制重定向。 – David 2015-02-06 01:01:12

+0

@deceze謝謝你的建議。我現在將通讀。 – iCode101 2015-02-06 01:01:25

回答

0

URL參數沒有執行,所以你不打開自己的攻擊。但是,未能對數據進行編碼可能會導致參數被錯誤地解釋。您應該使用urlencode()

$foo = urlencode($foo); 
header("Location: /bar.php?foo=$foo");