在将插入的数据输入mysql查询之前,我创建了两个简单的函数来过滤插入的数据。
对于formfields(我还使用正则表达式分别检查每个字段)。

// Form filter
function filter($var)
{

    // HTML is not allowed
    $var = strip_tags(trim($var));

    // Check magic quotes and stripslashes
    if(get_magic_quotes_gpc())
    {
        $var = stripslashes($var);
}

    // Not using it right now, is it recommended?
    // $var = htmlentities($var, ENT_QUOTES);

    // Escape
    $var = mysql_real_escape_string($var);

    // Return
    return $var;
}

那么对于id(在url中发送的),我使用这个过滤器:
// ID filter
function idfilter($idfilter)
{
// Delete everything except numbers
$idfilter = ereg_replace("[^0-9]", "", $idfilter);

// Round numbers
$idfilter = round($idfilter);

// Test if the input is indeed a number
if(!is_numeric($idfilter) || $idfilter % 1 != 0)
{
    $idfilter = 0;
}

// Filter using the formfilter (above)
return filter($idfilter);
}

有没有建议添加或删除这些简单的功能?它“安全”吗?

最佳答案

您将不推荐的函数用作magic_quotesereg_*。为了防止sql注入,您应该使用prepared语句(我建议您使用PDO),为了防止xss,您应该像现在这样使用strip_tags()

09-04 23:42