我有一个搜索程序,它有多个与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注入之类的事情。
发布于 2011-02-09 21:47:46
您应该检查他们提供的字段是否在您允许搜索的字段列表/数组中。为了更加安全起见,在查询中的字段名称周围添加反引号。做这两件事将阻止任何通过这些变量的注入。
发布于 2011-02-09 22:00:46
发布于 2011-02-09 21:48:45
我会使用PDO,只是为了安全起见--然后确保你相应地处理所有的错误。
https://stackoverflow.com/questions/4945662
复制相似问题