在将输入插入数据库之前应该进行哪些清理以形成输入?

时间:2018-04-09 13:26:08

标签: mysql sql-injection html-sanitizing

在插入MySQL数据库之前应该进行哪些排序以形成输入?

我的PHP Web应用程序中只有2个用户输入的输入,它们将被发送到一系列连续的页面(通过GET和POST),然后最终存储到MySQL数据库中。

两者都是文本输入(例如,<input type="text />")。第一个是应该由Google maps api javascript填充的字段,但我显然不能信任;第二个是自由输入的username字段,目前只对字符串长度有限制。

在将这两个字段的值插入数据库之前,我应该对这两个字段的值执行哪些服务器端检查或转换,以防止恶意操作或其他可能带有特殊字符的错误?

我正在为我的所有数据库操作使用PDO预处理语句,例如:

$id = '1234567';
$username = 'John Smith'; //Could be weird characters like "Seán Óg Ó hAilpín"!
$Query = $db->prepare("INSERT INTO `MyTable` (`id`, `username`) VALUES (?,?)");
$Query->execute(array($id, $username));

如果要对值进行编码或转换,那么在以HTML格式显示之前应如何取消编码?

(我的所有其他表单变量都是从下拉select菜单中选择的结果,我想通过简单地退出接收脚本来验证和清理它们的值(如果它们中的任何一个不是({{ 1}})我期待的任何有限数量的变量。我希望这种白名单方法足以满足那些。)

0 个答案:

没有答案