2014-02-15 46 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语句