jueves, 7 de junio de 2012

CodeIgniter: Evitar XSS para grabar HTML tags y sus atributos

En algunas ocasiones es necesario grabar datos con código HTML y sus respectivos atributos, esto es recomendable hacerlo sobre todo en aplicaciones de backend, donde se tiene el control de qué usuarios pueden insertar o modificar información.

Esto claramente es un problema de seguridad por la inyección de código malicioso si se establecen estas preferencias en un ambiente de front-end pues ahí sí, un desconocido puede inyectar código malicioso como scripts de Javascript e incluso de php o perl o cgis.

  1. Hay que establecer la variable global_xss_filtering a FALSE, dentro del archivo application/config/config.php
    $config['global_xss_filtering'] = FALSE;
    
  2. Ya sea en el modelo o en un controlador, se deben obtener los datos y filtrarlos con la libreria XSS CLEAN que incorpora CodeIgniter
    $a_input_post = $this->input->post(NULL, TRUE); # retorna todos los elementos POST con el filtro XSS
    
    Ahora puedes trabajar con los campos de manera segura que se han filtrado y puesto en la variable $a_input_post
     
  3. Para grabar los datos de un campo específico en donde queremos tener el html íntegro desde el origen, lo que hay que hacer es evitar filtrar solamente ese campo:
    $this->db->set('descripcion', $this->input->post('mi_campo_html', FALSE));
    

No hay comentarios:

Publicar un comentario

Datos personales

Mi foto
Podrás encontrar códigos recursos y artículos sobre PHP, JavaScript, jQuery, MooTools, Ajax, CSS, HTML, UML, RUP, AUP, XP (eXtreme Programming), Six-Sigma, CMMI, FrameWorks, Zend Framework, Magento, CodeIgniter, CakePHP, Joomla 1.5, Doctrine, Active Record, ORM, POO, MVC, MySql, PostgreSql. Este espacio está destinado a ayudar y compartir un poco de lo mucho que he recibido de la comunidad en la Red.