我知道使用 MySQLi 和 PDO 的好处,但是我想知道清理多项选择列表的最佳方法是以下选项:
首先是使用 mysql_real_escape_string 的明显方法:
$clean_POST = array();
$clean_POST = mysql_real_escape_string($_POST['foo']);
但是是否存在恶意用户可以通过大量 POST 值发送并设法阻止服务器的风险?这里的回复似乎表明这是一种可能性。
可以通过创建白名单并对其进行迭代检查 POST 中的完全匹配来缓解此问题:
$_POST['foo'] = array('a', 'b');
$whitelist = array(‘a’, 'b', 'c', 'd');
$clean_POST = array();
if (isset($_POST['foo']))
{
foreach ($whitelist as $value)
{
if (in_array($value, $_POST['foo']))
{
$clean_POST[] = $value;
}
}
}
但是与 mysql-real-escape-string 方法相比,使用这种方法可能存在明显的处理时间劣势,特别是在需要同时处理大量字段的情况下?
考虑到安全性和性能,一种方法可以被认为是优越的吗?