2014-02-15 47 views
-2

我想通過PHP從應用程序發送一些參數到數據庫表。 我使用'GET'方法,並希望對變量設置一些限制和/或以某種方式使其安全,如下面的方法。 好的是他們只能包含希臘字母,數字和.-,符號。這個PHP方法安全嗎?

這樣做是否正確?

FORM:

<input type="text" name="a"> 
<input type=text" name="b"> 

網址:

http://the url.php?a=4,52&b=αβγδ.,-12345 

我想要它做的,只是什麼:

顯示行其中id = x如果用戶發送的現有ID和在PHP文件中定義的正確密鑰。

安全的方法[編輯]:

$dbh=db_conn(); 

$vara = mb_convert_encoding($_GET["a"], 'UTF-8', 'ISO-8859-7'); 
$varb = mb_convert_encoding($_GET["b"], 'UTF-8', 'ISO-8859-7'); 

$sqlb = $dbh->prepare("SELECT * FROM table WHERE id = ? AND $vara='myknowkey';"); 

$sqlb->execute($varb); 
+0

你爲什麼要替換'$ _GET [ '一']'直衝SQL,而不是把它作爲'$ _GET ['b']''的參數嗎? – IMSoP

+0

@IMSoP因爲您無法使用預準備語句將條件放置在任意列上。 –

+0

爲什麼這個問題標有準備好的語句? –

回答

5

沒有, $_GET[a]='myknowkey'可以注入代碼到你的SQL語句