Filtra y recupera de forma segura $_GET y $_POST en PHP
Hace tiempo comentaba cómo filtrar variables, ahora, usando los mismos filtros, podremos filtrar y realizar sanitize de $_GET y $_POST y asegurarnos de que no nos metan valores peligrosos en las entradas de nuestras aplicaciones.
Para ello haremos uso de filter_input y filter_input_array, pudiendo usar una lista de filtros bastante amplia.
$var = filter_input(INPUT_GET, 'parametro_entrada', FILTER_SANITIZE_STRING);
$var = filter_input(FILTER_GET,'paramentro_sin_filtrar', FILTER_UNSAFE_RAW);
$args = array(
'product_id' => FILTER_SANITIZE_ENCODED,
'component' => array('filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_REQUIRE_ARRAY,
'options' => array('min_range' => 1, 'max_range' => 10)
),
'versions' => FILTER_SANITIZE_ENCODED,
'doesnotexist' => FILTER_VALIDATE_INT,
'testscalar' => array(
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_REQUIRE_SCALAR,
),
'testarray' => array(
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_REQUIRE_ARRAY,
)
);
$myinputs = filter_input_array(INPUT_POST, $args);
Vía / PHPDeveloper.org
Los creadores de PHP tambien son los autores de uno de los mejores frameworks de PHP (¿hay alguno más?), su filosofÃa es clara, la ley del mÃnimo esfuerzo, ¿para qué vas a crearte unas librerÃas cuando ya existen?.
También es posible, y probablemente más limpio, simplemente definir una función y asignar a $_GET o a $_POST el valor de la función…
Ej:
function filtro($algo) {
ingrese sus verificaciones aquÃ.
}
$_GET=filtro($_GET);
Y con eso obtenemos algo más de flexibilidad y se calma mejor a los paranoicos de siempre.