Seguridad
Esta página describe algunas "buenas prácticas" acerca de segurdad web, y detalles de características de seguridad interna de CodeIgniter.
Seguridad en URI
CodeIgniter es justamente restrictivo sobre que caracteres permitir en las cadenas URI para ayudar a minimizar la posibilidad de que datos maliciosos puedan ser pasados a su aplicación. Las URIs sólo pueden contener lo siguiente:
- Texto alfanumérico
- "Tilde": ~
- Punto: .
- Dos puntos: :
- Guion bajo: _
- Guion: -
Datos GET, POST, y COOKIE
Los datos GET son simplemente anulados por CodeIgniter ya que el sistema utiliza segmentos URI en vez de las tradicionales query strings de URL (a menos que la opción query string esté habilitada en su archivo config). El arreglo global GET es destruido por la clase de Entrada (input) durante la inicialización del sistema.
Register_globals
Durante la inicialización del sistema, todas las variables globales son destruidas, excepto aquellas encontradas en los arreglos $_POST y $_COOKIE. La rutina de eliminación es efectivamente lo misma que register_globals = off.
magic_quotes_runtime
La directiva magic_quotes_runtime es apagada durante la inicialización del sistema para que no tenga que remover las barras cuando se recuperen datos de la base de datos.
Buenas prácticas
Antes de aceptar cualquier dato en su aplicación, ya sean datos POST desde el envío de un formulario, datos COOKIE, datos URI, datos XML-RPC, o incluso datos desde el arreglo SERVER, está alentado a practicar estos tres pasos de acercamiento:
- Filtrar los datos como si fueran contaminados.
- Validar los datos para asegurarse que conforman el tipo correcto, largo, tamaño, etc. (a veces, este paso puede reemplazar al paso uno)
- Escapar los datos entes de enviarlo a su base de datos.
Filtro de XSS
CodeIgniter viene con un filtro de XSS (Cross Site Scripting). Este filtro busca técnicas comunmente usadas para embeber Javascript malicioso a sus datos, u otro tipo de código que intente "secuestrar" (hijack) cookies o hacer otra cosa maliciosa. El Filtro XSS es descripto aquí.
Validar los datos
CodeIgniter tiene una Clase de Validación que le asiste en la validación, filtro y preparación de datos.
Escapar todos los datos antes de insertarlo a la base de datos
Nunca inserte información a su base de datos sin escaparla. Por favor vea la sección que trata consultas para más información.