CodeIgniter User Guide Version 1.6.1


Clase de Entrada (Input)

La Clase de Entrada sirve para dos propósitos:

  1. Pre-procesa datos de entrada global por seguridad.
  2. Provee alguna funciones auxiliares para recuperar datos de entradas y pre-procesarlos.

Nota: Esta clase es inicializada automáticamente por el sistema, así que no hay necesidad de que lo haga manualmente.

Filtros de Seguridad

La función de filtro de seguridad es llamada automáticamente cuando un nuevo controlador es invocado. Hace lo siguiente:

Filtro XSS

CodeIgniter viene con un filtro de prevención de Ataques Cross Site Scripting el cual puede ser corrido automáticmente para filtrar todos los datos POST y COOKIE que se encuentren, o puede correrlo en una base por ítem. Por defécto no corre globalmente ya que requiere un poco de sobrecarga de procesamiento, y además puede no ser necesario en todos los casos.

El filtro XSS busca técnicas comunes usadas para activar Javascript u otros tipos de código que intenten asaltar cookies o hacer otras cosas maliciosas. Si cualquier cosa no permitida es encontrada es mostrada de forma seguro convirtiendo los datos en caracteres de entidad.

Nota: Esta función sólo debe ser usada para manejarse con datos enviadas. No es algo que quiera usar para un procesamiento general de rutina ya que requiere una buena cantidad de sobrecarga de procesamiento.

Para filtrar datos a través del filtro XSS use esta función:

$this->input->xss_clean()

Aquí hay un ejemplo de uso:

$datos = $this->input->xss_clean($datos);

Si quiere que el filtro se ejecute automáticamente cada vez que encuentr datos POST o COOKIE puede habilitarlo abriendo su archivo application/config/config.php y estableciendo esto:

$config['global_xss_filtering'] = TRUE;

Nota: Si usa la clase de validación de formularios, esta ofrece la opción de filtro XSS también.

Usando Datos POST, COOKIE, or SERVER

CodeIgniter viene con tres funciones asistentes que le permiter recuperar ítems POST, COOKIE or SERVER. La principal ventaja de usar las funciones provistas en vez de traer el ítem directamente ($_POST['algo']) es que la función verificará si el ítem existe y devuelve false (buleano) si no. Esto le permite convenientemente usar datos sin tener que probar si un ítem existe primero. En otras palabras, normalmente puede hacer algo así:

if ( ! isset($_POST['algo']))
{
    $algo = FALSE;
}
else
{
    $algo = $_POST['algo'];
}

Con las funciones de CodeIgniter puede simplemente hacer esto:

$algo = $this->input->post('algo');

Las tres funciones son:

$this->input->post()

El primer parámetro contendrá el nombre del ítem POST que está buscando:

$this->input->post('algun_dato');

La función devuelve FALSE (buleano) si el ítem que intenta recuperar no existe.

El segundo opcional parámetro le permite correr los datos a través del filtro XSS. Es habilitada al establecer el segundo parámetro como un buleano TRUE;

$this->input->post('algun_dato', TRUE);

$this->input->cookie()

Esta función es idéntica a la función post, sólo que recupera datos de cookie:

$this->input->cookie('algun_dato', TRUE);

$this->input->server()

Esta función es idéntica a las funciones anteriores, sólo que recupera datos del servidor:

$this->input->server('algun_dato');

$this->input->ip_address()

Devuelve la dirección de IP del usuario actual. Si la dirección IP no es válida, la función devolverá un IP de: 0.0.0.0

echo $this->input->ip_address();

$this->input->valid_ip($ip)

Toma una dirección de IP como entrada y devuelve TRUE o FALSE (buleano) si es válida o no. Nota: La función $this->input->ip_address() de arriba valida el IP automáticamente.

if ( ! $this->input->valid_ip($ip))
{
     echo 'Not Valid';
}
else
{
     echo 'Valid';
}

$this->input->user_agent()

Devuelve el agente del usuario (explorador web) en uso por el usuario actual. Devuelve FALSE si no está disponible.

echo $this->input->user_agent();