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 no filtrado por CodeIgniter

Ejemplo de comentario filtrado:

Ejemplo de comentario filtrado por CodeIgniter

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
}

results matching ""

    No results matching ""