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

Mik*_*ike 1 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>
Run Code Online (Sandbox Code Playgroud)

然后提交时:

$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 . "'";
Run Code Online (Sandbox Code Playgroud)

这是一个内部网页,我们中只有少数人会真正看到这些新盒子,但我想知道是否可以在这里使用sql注入.

Dan*_*man 5

您应该检查它们提供的字段是否在您允许搜索的字段列表/数组中.在查询中的字段名称周围添加反引号也是为了更加安全.同时执行这些操作将阻止通过这些变量进行任何注入.