El filtrado, validación y limpieza de datos son aspectos cruciales en el desarrollo de aplicaciones web seguras. En PHP, la función filter_var
es una herramienta poderosa que facilita estas tareas.
¿Qué es filter_var?
filter_var
es una función de PHP que permite filtrar, validar y sanitizar variables con distintos tipos de filtros predefinidos. Esto ayuda a prevenir la inyección de datos maliciosos y asegura que los datos cumplen con los criterios esperados antes de ser procesados.
La función filter_var
tiene la siguiente sintaxis:
filter_var(mixed $variable, int $filter, array|int $options = 0);
$variable
: La variable a filtrar, validar o sanitizar.$filter
: El filtro que se va a aplicar.$options
: Opciones que modifican el comportamiento del filtro (Opcional).
Filtros de validación
La validación es el proceso de comprobar si los datos cumplen ciertos requisitos, para ello se tiene los siguientes filtros:
Filtro | Descripción |
FILTER_VALIDATE_BOOLEAN | Valida si es valor es 0 o 1 (booleano). |
FILTER_VALIDATE_EMAIL | Valida una dirección de correo electrónico. |
FILTER_VALIDATE_FLOAT | Valida si el valor es un float o decimal. |
FILTER_VALIDATE_INT | Valida un valor como entero. |
FILTER_VALIDATE_IP | Valida si es valor es una dirección IP. |
FILTER_VALIDATE_URL | Valida si su valor es una URL. |
Por ejemplo, para comprobar si una variable contiene un correo, podemos hacerlo con:
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "El correo electrónico no es válido.";
}
Filtros de saneamiento
El saneamiento es el proceso de limpiar los datos, eliminando los caracteres no deseados. Para ello se tiene los siguientes filtros:
Filtro | Descripción |
FILTER_SANITIZE_EMAIL | Elimina todos los caracteres no permitidos en un email. |
FILTER_SANITIZE_NUMBER_FLOAT | Elimina los caracteres no numéricos excepto + y -. |
FILTER_SANITIZE_NUMBER_INT | Elimina todos los caracteres que no sean dígitos. |
FILTER_SANITIZE_SPECIAL_CHARS | Escapa caracteres HTML ‘»<>& y caracteres. |
FILTER_SANITIZE_STRING | Elimina todas las etiquetas HTML. |
FILTER_SANITIZE_URL | Elimina todos los caracteres no permitidos en una URL. |
Luego, si queremos sanear el comentario enviado por un usuario, se haría mediante:
$comment = '<script>alert("hola");</script>';
echo filter_var($comment, FILTER_SANITIZE_STRING); // alert("hola");
echo filter_var($comment, FILTER_SANITIZE_SPECIAL_CHARS); // <script>alert("hola");</script>
Ejemplo Completo
Supongamos que tenemos un formulario donde se recibe el nombre, correo y teléfono. Lo primero es sanear todos los campos y luego validar cada uno de ellos:
// sanitize params
$name = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
$phone = filter_var($_POST['phone'], FILTER_SANITIZE_NUMBER_INT);
// validate params
if (empty($name)) {
echo "El nombre no es válido.";
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "El correo electrónico no es válido.";
}
if (!filter_var($phone, FILTER_VALIDATE_INT)) {
echo "El teléfono no es válido.";
}
Conclusión
La función filter_var
en PHP es una herramienta versátil y esencial para asegurar que los datos recibidos en una aplicación sean seguros, válidos y limpios. Al utilizar los filtros adecuados, puedes proteger tu aplicación contra diversas vulnerabilidades y asegurar que los datos sean procesados correctamente.
Referencias
Envíar Comentario
En este sitio los comentarios se publican previa aprobación del equipo de Kodetop. Evita los comentarios ofensivos, obscenos o publicitarios. Si deseas publicar código fuente puedes hacerlo entre las etiquedas
<pre></pre>