Estoy tratando de encontrar una manera de limpiar de manera efectiva todas las variables POST y GET con una sola función. Aquí está la propia función:
//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);
}
}
Y aquí está el código que lo llamaría:
//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);
}
Esto me parece que debería funcionar. Pero por alguna razón, no devolverá las matrices de algunas casillas de verificación que tengo en un formulario. Siguen saliendo en blanco.
He probado mi código sin la función anterior y funciona bien, solo quiero que se agregue un poco de seguridad.
Gracias!
Debe evitar tratar de desinfectar todo en cada contexto. Eso solo obstaculiza su aplicación y hace que sea más difícil de asegurar cuando quiera recrear la funcionalidad perdida. Esta es una razón válida por la cual magic_quotes estaba deshabilitada. http://php.net/manual/en/security.magicquotes.php Algo que estás recreando en cierto sentido aquí. La entrada necesita desinfectarse para la aplicación a la que la envía. Si está enviando al navegador a través de HTTP, desinféctelo para HTTP y HTML. Si lo está enviando a SQL DB, desinféctelo para SQL. – bucabay
lo siento, me refiero a obsoleto: http://php.net/manual/en/security.magicquotes.php – bucabay
Gracias por la ayuda/consejo todos! Parece que necesito repensar mi proceso. :-) – tscully