2012-04-11 57 views
0

我剛剛僱人做一個安全的形式,並且粘貼下面只是一個大的代碼片段:這是逃避多個領域的正確方法嗎?

 $_POST = escape_all($_POST); 

     $some1 = $_POST['some1']; 
     $some2 = $_POST['some2']; 
     $some3 = $_POST['some3']; 
     $some4 = $_POST['some4']; 
     $some5 = $_POST['some5']; 
     $some6 = $_POST['some6']; 
     $some7 = $_POST['some7']; 
     $some8 = $_POST['some8']; 

那是正道還是我要補充mysql_real_escape_string();到所有的變量?

+1

取決於'escape_all'是什麼。 – Amber 2012-04-11 03:24:26

+0

告訴你的「僱傭」關於'mysqli' – 2012-04-11 03:26:12

+1

你真的更好*不*使用$ _POST搞砸了,而是使用編寫SQL的技術來避免轉義(例如命名參數)。 – Eli 2012-04-11 03:49:10

回答

2

這看起來像他寫了一個自定義函數來逃避。只要escape_all函數調用mysql_real_escape字符串,它將在技術上起作用,但我不會說這是因爲幾個原因而優選的解決方案。

首先,你要小心不要在其他地方逃跑,因爲它很容易導致雙重逃跑,這可能會導致其他問題。

此外,如果性能是一個問題,您最終可能會轉義大量不需要轉義的數據,這取決於具體情況。

是的,使用mysqli而不是mysql通常是可取的。

+0

謝謝。我也檢查了整個代碼,並找不到函數escape_all。所以不知道他到底在做什麼。我想我可以手動將它添加到變量。 – AAA 2012-04-11 03:30:59

+0

不客氣!如果代碼沒有給你提供某種錯誤或通知,那麼該函數必須在某處。無論如何,手動轉義只需要輸入什麼輸入是一個比一般逃脫整個POST超全局更理想的解決方案。 – Mansfield 2012-04-11 03:34:17

相關問題