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 array和FILTER_SANITIZE_STRING标志来过滤整个post数组
filter_var_array($_POST, FILTER_SANITIZE_STRING) //just an example filter
Run Code Online (Sandbox Code Playgroud)
w3schools 过滤器参考中提供了大量不同的过滤器选项
为了使递归更加优雅,你可以使用像array_map这样的东西:
$_POST = array_map('mysql_real_escape_string',$_POST);
Run Code Online (Sandbox Code Playgroud)
如果可以的话,请使用filter var,因为这些方法通常都很糟糕,只是一个例子;)
| 归档时间: |
|
| 查看次数: |
48964 次 |
| 最近记录: |