我问这个问题是因为我仍然不太确定过滤 $_GET 变量是否足以防止 mysql 注入,所以起初我有一个过滤功能
function filter_url($url)
{
if (is_array($url))
{
foreach ($url as $key => $value)
{
// recurssion
$url[$key] = filter_url($value);
}
return $url;
}
else
{
// remove everything except for a-ZA-Z0-9_.-&=
$url = preg_replace('/[^a-zA-Z0-9_\.\-&=]/', '', $url);
return $url;
}
}
我$_GET=filter_url($_GET);
每次打电话之前都有
$filter_case =isset($_GET['product_ID'])?"and product_ID={$_GET['product_ID']}":"";
我需要做$mysqli->real_escape_string($_GET['product_ID'])
吗?如果我还是要暗示的话,什么样的sql注入会越过我的查询方法呢?
此外,重要的$mysqli->real_escape_string($_SESSION['member_ID'])
是我在想是否有人可以操纵他的$_SESSION
变量?