让用户指定要搜索的mysql字段是否安全?

时间:2011-02-09 13:44:55

标签: php mysql

我有一个搜索程序,它有多个输入文本框,对应于mysql数据库中的字段。我想知道一个自定义搜索框是否安全,用户可以在其中输入要搜索的实际字段及其值。

像这样:

<form method='post'>
 <input type='text' name='param1' />
 <input type='text' name='param2' />
 <input type='text' name='customField' />
 <input type='text' name='customValue' />
</form>

然后提交时:

$param1 = mysql_real_escape_string($_POST['param1']);
$param2 = mysql_real_escape_string($_POST['param2']);
$customField = mysql_real_escape_string($_POST['customField']);
$customValue = mysql_real_escape_string($_POST['customValue']);

$query = "SELECT * FROM mytable WHERE field1 LIKE '" . $param1 . "' AND field2 LIKE '" . $param2 . "' AND " . $customField . " LIKE '" . $customValue . "'";

这是一个内部网页,我们中只有少数人会真正看到这些新框,但我想知道是否可以在这里找到类似sql注入的内容。

4 个答案:

答案 0 :(得分:5)

您应该检查他们提供的字段是否在您允许搜索的字段列表/数组中。在查询中的字段名称周围添加反引号也是为了更加安全。做这两件事会阻止任何注入这些变量。

答案 1 :(得分:1)

答案 2 :(得分:0)

我使用PDO,只是为了安全 - 然后确保相应地处理所有错误。

答案 3 :(得分:0)

Mike首先禁用你的mysql的多查询模式,其余的很好,

并注意使用单个表,如果你没有使用连接,那么我不在那里会有任何影响。