staram się wymyślić sposób, aby skutecznie łatwo oczyścić wszystkie POST i GET zmienne z jednej funkcji. Oto funkcja sama:
//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);
}
}
A oto kod, który by to nazwać:
//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);
}
Dla mnie to wydaje się, że powinna działać. Ale z jakiegoś powodu nie zwróci tablic z niektórych pól wyboru, które mam w formularzu. Wciąż wychodzą puste.
Przetestowałem mojego kodu bez powyższej funkcji i działa dobrze, po prostu chcę to dodaje trochę bezpieczeństwa tam.
Dzięki!
Należy unikać próbuje zdezynfekować wszystko dla każdego kontekstu. To tylko przeszkadza twojej aplikacji i sprawia, że trudniej jest ją zabezpieczyć, gdy chcesz odtworzyć utraconą funkcjonalność. Jest to ważny powód wyłączenia magic_quotes. http://php.net/manual/en/security.magicquotes.php Coś tu odtwarzasz w pewnym sensie. Dane wejściowe muszą być odkażone dla aplikacji, do której je wysyłasz. Jeśli wysyłasz do przeglądarki przez HTTP, odkaż go dla HTTP i HTML. Jeśli wysyłasz go do SQL DB, odkaż go dla SQL. – bucabay
przepraszam, chciałem nieaktualne: http://php.net/manual/en/security.magicquotes.php – bucabay
Dzięki za pomoc/poradę wszystkich! Wygląda na to, że muszę przemyśleć mój proces. :-) – tscully