Programación segura - Filtrado de datos
PHP nos facilita la programación segura para no comprometer la seguridad del servidor con distintas funciones para el tratamiento de datos. A partir de este apartado veremos como podemos filtrar los datos enviados por los usuarios a través de variables superglobales como $_GET, $_POST, $_COOKIE, etc.
En esta sesión nos centraremos en el filtrado de datos suponiendo que todos los datos enviados a través de variables como $_GET, $_POST,... es inseguro.
Vulnerabilidades web más conocidas:
XSS (Cross Site Scripting): vulnerabilidad como consecuencia de errores de filtrado de las entradas del usuario con el fin de conseguir vulnerar al cliente o al servidor de la aplicación web. Por ejemplo, inyectando:
- Código de marcas (html)
- Código ejecutable en la máquina cliente (Javascript)
- Código ejecutable en el servidor (PHP) en las entradas de aplicaciones web
SQL Injection: Consulta que no ha sido correctamente tratada no escapando los caracteres especiales pudiendo lograr resultados no previstos. Ejemplos:
- Autorizar un acceso inválido.
- Acceso no autorizado a una base de datos.
- Ejecutar código no permitido en el servidor.
RFI - LFI (Remote/Local File Inclusion): incluir archivos remotos dentro de nuestros scripts PHP. La función "include()" de PHP nos permite incluir archivos dentro de nuestro documento como si fueran parte del texto. Por ejemplo:
<?php
$pagina = $_GET['pag'];
include($pagina);
?>
Esta vulnerabilidad no afecta solamente a la seguridad de los usuarios sino también a la del servidor, ya que nos permite modificar archivos de la página.