Я пытаюсь найти способ эффективно легко очистить переменные 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);
}
мне это кажется, как она должна работать. Но по какой-то причине он не будет возвращать массивы из некоторых флажков, которые у меня есть в форме. Они продолжаются.
Я протестировал свой код без вышеуказанной функции, и он отлично работает, я просто хочу, чтобы в нем был добавлен бит безопасности.
Спасибо!
Вам следует избегать попытки дезинформировать все для каждого контекста. Это только мешает вашему приложению и затрудняет защиту, когда вы хотите воссоздать утраченные функции. Это допустимая причина, по которой magic_quotes был отключен. http://php.net/manual/en/security.magicquotes.php То, что вы воссоздаете в некотором смысле здесь. Ввод должен быть дезинфицирован для приложения, к которому вы его отправляете. Если вы отправляете браузер через HTTP, дезинфицируйте его для HTTP и HTML. Если вы отправляете его в SQL DB, дезинфицируйте его для SQL. – bucabay
извините, я имел в виду устаревшее: http://php.net/manual/en/security.magicquotes.php – bucabay
Спасибо за помощь/совет! Похоже, мне нужно переосмыслить мой процесс. :-) – tscully