Limpiar y validar variables GET y POST en PHP
Limpiar y validar variables GET. Si estás trabajando en un sistema seguramente se han encontrados con formularios que trabajan con métodos GET y POST para manejar la información del sistema o quizá al momento de editar in registro usan el identificador del registro para pasarlo a la URL y mostrar tal registro.
En estos casos es de vital importancia limpiar las variables de posibles inyecciones SQL que pudiéramos ser víctimas y posterior evitarnos dolores de cabeza ante accesos no autorizados en nuestra plataforma.
¿Cuál es la solución para estos problemas?
El método es muy sencillo de aplicar y solo se debe agregar al inicio de nuestros ficheros «.php» que se van a usar en el proceso. Sin embargo, el trabajo conciso de este método es recorrer todos los valores recibidos por GET y POST y limpiarlos de cadenas peligrosas.
Validación y desinfección de datos con filtros
Limpiar y validar la entrada del usuario es una de las tareas más comunes en una aplicación web. Para facilitar esta tarea, PHP proporciona una extensión de filtro nativa que puede utilizar para desinfectar o validar datos como direcciones de correo electrónico, direcciones URL, direcciones IP, números, cadenas de texto, etc.
Para validar los datos utilizando la extensión de filtro es necesario utilizar la función filter_var() de PHP. La sintaxis básica de esta función se puede dar con:
Sintaxis
filter_var(variable, filter, options)
Esta función toma tres parámetros de los cuales los dos últimos son opcionales. El primer parámetro es el valor que se va a filtrar, el segundo parámetro es el identificador del filtro que se va a aplicar y el tercer parámetro es la matriz de opciones relacionadas con el filtro. Veamos cómo funciona.
a) Sanitizar una cadena de texto
En el ejemplo siguiente se desinfectará una cadena quitando todas las etiquetas HTML de ella:
<?php // Ejemplo de comentario $comentario = "<h1>Hola! Buenos dias con todos</h1>"; // Desinfectar e imprimir cadena de comentarios $limpiacomentario= filter_var($comentario , FILTER_SANITIZE_STRING); echo $limpiacomentario; ?>
La salida del ejemplo anterior se verá algo como esto:
Hola! Buenos dias con todos
b) Limpiar y validar valores enteros
En el ejemplo siguiente se valida si el valor es un entero válido o no.
<?php // Ejemplo de variable numerica no valida $novalido = "//25[]"; // Quitamos los caracteres ilegales de la variable $numero = filter_var($novalido, FILTER_SANITIZE_NUMBER_INT); // Validamos la variable filtrada if(filter_var($numero, FILTER_VALIDATE_INT)){ echo "EL $numero ES NUMERO VALIDO"; } else{ echo "EL $numero NO ES NUMERO VALIDO"; } ?>
La salida en el navegador una vez procesara sera:
EL 25 ES NUMERO VALIDO
Lista completa: Filtros de saneamiento
FILTER_SANITIZE_EMAIL.– Elimina todos los caracteres menos letras, dígitos y !#$%&’*+-=?^_`{|}~@.[].
FILTER_SANITIZE_ENCODED.– String URL-encode, opcionalmente elimina o codifica caracteres especiales.
FILTER_SANITIZE_NUMBER_INT.– Elimina todos los caracteres excepto dígitos y los signos de suma y resta.
FILTER_SANITIZE_STRING.- Elimina etiquetas, opcionalmente elimina o codifica caracteres especiales.
CONCLUSIÓN
En este articulo hemos aprendido a limpiar los métodos POST y GET que son los preferidos por los Hackers para acceder a nuestros sistemas. Además, no solo son para esos métodos, podemos hacerlo con cualquier otra variable.
Con esta simple implementación ya le estamos haciendo la tarea más difícil a los hackers. Sin embargo, podemos limpiar varios entornos como ser: URL, EMAIL, NÚMEROS, CADENAS DE TEXTO, etc.
Espero que esta breve explicación les ayude en sus proyectos web.
Saludos, intento limpiar la url despues de insertar datos en una tabla, pero no me funciona. quien me ayuda por favor
Una pregunta que incluye el precio que indicas de $9.99, crees que puedas detallarme lo que es?
(Obvio son dolares cierto?)
Gracias, recibe un cordial saludo.
Hola Jesús,
Si, son dolares.
Es un producto con varios sistemas escrito en PHP y usando MySQL, son 156 sistemas que ayudaran al programador.
Si desea ver más detalles, aquí el vinculo.
https://www.baulphp.com/downloads/descargar-156-sistemas-php-mysql/