清理$ _POST变量

tsc*_*lly 13 php security variables post

我试图想出一种方法,用一个函数有效地轻松清理所有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);
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是可以称之为的代码:

//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);
}
Run Code Online (Sandbox Code Playgroud)

对我来说,这似乎应该有效.但由于某种原因,它不会从表格中的一些复选框返回数组.他们一直空白.

我已经在没有上述功能的情况下测试了我的代码,它工作正常,我只是想在那里增加一点安全性.

谢谢!

And*_*rew 22

尽可能使用filter_input(php5 +)它使它保持清洁,并且我知道你可以使用它来消毒和验证你可能需要的一切.

您可以使用filter var arrayFILTER_SANITIZE_STRING标志来过滤整个post数组

filter_var_array($_POST, FILTER_SANITIZE_STRING) //just an example filter
Run Code Online (Sandbox Code Playgroud)

w3schools 过滤器参考中提供了大量不同的过滤器选项


rye*_*guy 7

你做的还不够.看到这里.


rob*_*lls 7

为了使递归更加优雅,你可以使用像array_map这样的东西:

$_POST = array_map('mysql_real_escape_string',$_POST);
Run Code Online (Sandbox Code Playgroud)

如果可以的话,请使用filter var,因为这些方法通常都很糟糕,只是一个例子;)


归档时间:

查看次数:

48964 次

最近记录:

11 年,7 月 前