Clase Security
Filtrado XSS
Como hemos comentado anteiormente, CodeIgniter incorpora un filtro XSS (Cross Site Scripting - prevención de intrusión) el cual se puede ejecutar automáticamente filtrando todos los datos enviados vía POST y COOKIE, o podemos realizarlo de forma manual para cada índice del array. Por defecto no está activo globalmente porque requiere una cierta sobrecarga de procesamiento y no siempre es necesario realizar dicho procesamiento.
El filtro XSS busca técnicas utilizadas normalmente para ejecutar código Javascript u otros (incluso código PHP) e intentar obtener datos almacenados en "cookies" o incluso obtener valores variables de sesión. Si el filtro encuentra caracteres no permitidos los filtrará convirtiéndolos en entidades o incluso sustituyéndolos por otros caracteres.
Ejemplo de comentario no filtrado introducido por un usuario:
Ejemplo de comentario filtrado:
Para filtrar datos utilizando el filtro XSS usaremos la siguiente función:
$this->security->xss_clean()
Un ejemplo de uso para devolver datos ya filtrados:
$datos_filtrados = $this->input->xss_clean($datos_entrada);
El filtrado XSS se puede utilizar junto con la clase Form para validación de datos. Más adelante veremos como utilizarlo.
La función **xss_clean** recibe un segundo parámetro opcional, **is_image**, que permite comprobar si una imagen contiene códigos para posibles ataques XSS. Si establecemos a TRUE este segundo parámetro, en vez de devolver una cadena filtrada, la función devuelve TRUE si la imagen es segura, o FALSE si contiene información potencialmente peligrosa que un navegador puede intentar ejecutar.
Ejemplo de uso:
if ($this->input->xss_clean ($file, TRUE) === FALSE)
{
//el fichero contiene datos XSS
}