I’m using following function to protect my db from injection attacks and etc. for gets.
function filter($data) {
global $db;
$data = trim(htmlentities(strip_tags($data)));
if (get_magic_quotes_gpc())
$data = stripslashes($data);
$data = $db->real_escape_string($data);
return $data;
}
foreach($_GET as $key => $value) {
$data[$key] = filter($value);
}
Question is, i want to filter not only $_GET but $_POST too. How to do that?
And can I reassign value to $_GET or $_POST after filtering? I mean $_GET[$key] = filter($value); instead of $data[$key] = filter($value);..
Don’t pre-escape your variables, escape them only at the time you need to escape them.
PHP did this in the past. It was called
magic_quotes_gpc.But it’s so bad practice that it’s now deprecated, and it will be removed from the next version of PHP.
It’s better to just escape everything at the time you need to. You print a variable ? escape it. You don’t have to remember if it’s already escaped or not: it’s not.