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
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.