This question already has answers here:
Do htmlspecialchars and mysql_real_escape_string keep my PHP code safe from injection?

(6个答案)


6年前关闭。




我正在尝试提出一种方法,可以通过一个函数有效轻松地清除所有POST和GET变量。这是函数本身:
//clean the user's input
function cleanInput($value, $link = '')
{
    //if the variable is an array, recurse into it
    if(is_array($value))
    {
        //for each element in the array...
        foreach($value as $key => $val)
        {
            //...clean the content of each variable in the array
            $value[$key] = cleanInput($val);
        }

        //return clean array
        return $value;
    }
    else
    {
        return mysql_real_escape_string(strip_tags(trim($value)), $link);
    }
}

这是调用它的代码:
//This stops SQL Injection in POST vars
foreach ($_POST as $key => $value)
{
    $_POST[$key] = cleanInput($value, $link);
}

//This stops SQL Injection in GET vars
foreach ($_GET as $key => $value)
{
    $_GET[$key] = cleanInput($value, $link);
}

对我来说,这似乎应该起作用。但是由于某种原因,它不会从表单中的某些复选框返回数组。他们总是空白。

我已经在没有上述功能的情况下测试了我的代码,并且工作正常,我只想在其中增加一点安全性。

谢谢!

最佳答案

您所做的还不够。参见here

08-16 16:40