Artículo
|
Filtrar datos en php con la función filter_var |
A la hora de deja que un usuario introduzca datos en nuestra aplicación por medio de algún formulario, debemos de tener muy en cuenta el filtrado de esos datos para evitar que nos puedan meter algún código malicioso que pueda afectar a nuestra aplicación. Si filtramos los datos, podremos evitar tipos de ataques como es el SQL Inyection o el XSS.
Podríamos pensar que hacer la validación a nivel del cliente podría ser suficiente, pero hay herramientas que permiten saltarse esa verificación y de esa forma poner en peligro nuestra aplicación.
Hoy vamos a ver una forma de verificar los datos por medio de la función filter_var que nos proporciona PHP.
La función filter_var nos permite filtrar una variable según el filtro especificado en sus parámetros. Los parámetros que puede recibir esta función son:
A continuación indicamos un listado de filtros de validación:
A continuación, os mostramos un listado de filtros para sanear:
Filtros para el saneamiento de textos:
Vamos a proceder a ver algunos ejemplos que nos puedan servir para ver su funcionamiento.
En el primero veremos como validar un número entero.
En este caso, la función devuelve el número si es correcto, o el valor false, si no es entero.
También podemos indicar que el valor debe de estar dentro de un rango. El código sería el siguiente:
En este otro ejemplo, limpiaremos nuestra cadena de todos los elementos que no tienen cabida en nuestro campo.
$var = 'uno23';
echo filter_var($var, FILTER_SANITIZE_NUMBER_INT);
En este caso, queremos sanear para dejar un entero. La salida sería el valor 23, la cadena “uno” desaparecería.
Ahora veremos un ejemplo de como sanear una cadena que incluye caracteres html, pero dejando sin codificar las comillas dobles.
Como podéis ver, esta función nos puede ser de mucha ayuda a la hora de limpiar los campos y así evitarnos posibles problemas.
Vía: Ontuts
Podríamos pensar que hacer la validación a nivel del cliente podría ser suficiente, pero hay herramientas que permiten saltarse esa verificación y de esa forma poner en peligro nuestra aplicación.
Hoy vamos a ver una forma de verificar los datos por medio de la función filter_var que nos proporciona PHP.
La función filter_var nos permite filtrar una variable según el filtro especificado en sus parámetros. Los parámetros que puede recibir esta función son:
- $var: Variable que se quiere filtrar.
- $filter: Filtro que deseamos aplicar. Será una constante numérica.
- $options: Conjunto de opciones que modificarán el funcionamiento del filtro. Será una constante numérica o un array.
A continuación indicamos un listado de filtros de validación:
- FILTER_VALIDATE_BOOLEAN: Valida la variable como un booleano.
- FILTER_VALIDATE_EMAIL: Valida la variable como una dirección de correo electrónico correcta.
- FILTER_VALIDATE_FLOAT: Valida que la variable sea del tipo float.
- FILTER_VALIDATE_INT: Valida la variable como un número entero.
- FILTER_VALIDATE_IP: Valida la variable como una dirección IP.
- FILTER_VALIDATE_REGEXP: Valida la variable contra una expresión regular enviada en la variable de opciones.
- FILTER_VALIDATE_URL: Valida el valor coma una URL de acuerdo con la RFC 2396.
A continuación, os mostramos un listado de filtros para sanear:
- FILTER_SANITIZE_EMAIL: Elimina todos los caracteres execpto letras, números y !#$%&’*+-/=?^_`{|}~@.[].
- FILTER_SANITIZE_ENCODED: Codifica la cadena como una URL válida.
- FILTER_SANITIZE_MAGIC_QUOTES: Aplica la función addslashes.
- FILTER_SANITIZE_NUMBER_FLOAT: Elimina todos los caracteres excepto números, +- y opcionalmente ,.eE.
- FILTER_SANITIZE_NUMBER_INT: Elimina todos los caracteres excepto números y los signos + -.
- FILTER_SANITIZE_SPECIAL_CHARS: Escapa caracteres HTML y caracteres con ASCII menor a 32.
- FILTER_SANITIZE_STRING: Elimina etiquetas, opcionalmente elimina o codifica caracteres especiales.
- FILTER_SANITIZE_STRIPPED: Alias del filtro anterior.
- FILTER_SANITIZE_URL: Elimina todos los caracteres excepto números, letras y $-_.+!*’(),{}|^~[]`#%”;/?:@&=.
Filtros para el saneamiento de textos:
- FILTER_FLAG_NO_ENCODE_QUOTES: No codificará las comillas simples ni dobles.
- FILTER_FLAG_STRIP_LOW: Elimina caracteres cuyo varlor ASCII sea menor a 32.
- FILTER_FLAG_STRIP_HIGH: Elimina caracteres cuyo valor ASCII sea mayor a 127.
- FILTER_FLAG_ENCODE_LOW: Codifica caracteres cuyo valor ASCII sea mennor a 32.
- FILTER_FLAG_ENCODE_HIGH: Codifica caracteres cuyo valor ASCII sea mayor a 127.
- FILTER_FLAG_ENCODE_AMP: Codifica ampersands (&).
Vamos a proceder a ver algunos ejemplos que nos puedan servir para ver su funcionamiento.
En el primero veremos como validar un número entero.
$var = 123; echo filter_var($var, FILTER_VALIDATE_INT);
En este caso, la función devuelve el número si es correcto, o el valor false, si no es entero.
También podemos indicar que el valor debe de estar dentro de un rango. El código sería el siguiente:
$options = array('min_range'=>10, 'max_range' => 20));
if(filter_var($var, FILTER_VALIDATE_INT, $options) === false){
echo 'Valor incorrecto';
}else{
echo 'Valor correcto';
}
En este otro ejemplo, limpiaremos nuestra cadena de todos los elementos que no tienen cabida en nuestro campo.
$var = 'uno23';
echo filter_var($var, FILTER_SANITIZE_NUMBER_INT);
En este caso, queremos sanear para dejar un entero. La salida sería el valor 23, la cadena “uno” desaparecería.
Ahora veremos un ejemplo de como sanear una cadena que incluye caracteres html, pero dejando sin codificar las comillas dobles.
$text = '<p>"Hola mundo!"</p>'; echo filter_var($text, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES); //Resultado: "Hola mundo!"
Como podéis ver, esta función nos puede ser de mucha ayuda a la hora de limpiar los campos y así evitarnos posibles problemas.
Vía: Ontuts
![]() |
Publicado por: angel carrero |
|
|
Comentarios
Últimas noticias
· factura
Últimos artículos














































