2012-01-08 65 views
2

我有一個基於url路徑進行過濾的網頁。地址是這樣的:如何在引用web url時避免mysql注入

www.xxx.com/player-profile/?ID=130

該頁面使用ID字段,如下過濾:

$playerid = $_GET['ID']; 

$result = mysql_query("SELECT * FROM tblPlayers Where lng_RecordID_PK LIKE ".$playerid.""); 

我想確保此代碼沒有任何安全問題。我認爲有人可能會嘗試和操縱網址。有什麼建議麼?

+0

我不知道這一點,但只左右鑄造它作爲INT什麼?預防注射是否安全? – Tarek 2012-01-08 03:05:08

回答

2

由於ID是數字,因此確保查詢的安全性非常簡單且非常強大!

$playerid = $_GET['ID']; 
if (!is_numeric($playerid)) { die(); } 
$playerid = mysql_real_escape_string($playerid); // Just in case 

該代碼基本上確保在URL中輸入的ID是數字,否則它將停止執行腳本。如果它是數字,那麼它將繼續檢索數據,並且沒有任何SQL注入的方法。

希望有幫助! :)

此外,您可能想查詢更改這個

$result = mysql_query("SELECT * FROM tblPlayers WHERE lng_RecordID_PK = '".$playerid."' "); 
+0

(+1)在盒子外面思考。不過,我也會做一個傳統的真正的逃生。保證安全無損。誰知道它會阻止什麼字符編碼。 – FakeRainBrigand 2012-01-08 04:24:13

+0

謝謝:)實際上,我通常也這樣做。添加到我的回答 – Tom 2012-01-08 04:32:40

+0

優秀。謝謝。完美工作! – DoubleA 2012-01-08 04:44:25

2

使用addslashesmysql_real_escape_string功能$playerid。另外,將$playerid插入到查詢中時將其引號引起來。最後,如果簡單的=完全相同,請避免使用LIKE