Codificación y Validación de entrada/salida

Área SEG_Codificacion_y_Validacion

La debilidad de seguridad más común en aplicaciones web es la falta de validación apropiada de las entradas del cliente o del entorno.Teniendo en cuenta una serie de indicaciones y consejos a la hora de codificar nuestras aplicaciones podremos evitar problemas como la inyección de código SQL, de comandos, LDAP, XPath, XML o por XSS.

Esta debilidad lleva a casi todas las principales vulnerabilidades en las aplicaciones, tales como intérprete de inyección, ataques locale/Unicode, ataques al sistema de archivos y desbordamientos de memoria.

Nunca se debe confiar en los datos introducidos por el cliente, ya que podría manipularlos. Hay que garantizar que la aplicación sea robusta contra todas las formas de ingreso de datos, ya sea obtenida del usuario, de la infraestructura, de entidades externas o de sistemas de base de datos.

Existen vulnerabilidades asociadas a la validación de los datos,

  • Vulnerabilidad de la integridad de los datos El atacante manipula los datos introduciendo intencionadamente datos erróneos que manipulan la función de negocio.

  • Violación del formato de los datos Un atacante consigue introducir datos sin la sintaxis correcta, fuera de los limites de longitud, que contenga caracteres no permitidos, con signo incorrecto o fuera de los límites del rango. Esto provoca un mal funcionamiento de la aplicación.

  • Incumplimiento de las reglas de negocio Se introducen datos que no cumplen con las reglas de negocio. Lo que provoca un comportamiento no esperado de la aplicación.

Objetivos

  • Aplicar técnicas de codificación que mejoren la seguridad de las aplicaciones
  • Evitar los ataques por inyección con la validación de la entrada / salida

Contenido del área

Recursos
Código Título Tipo Carácter
RECU-0616 Escapado de caracteres en PHP Ejemplo Obligatorio
RECU-0558 Exposición de código fuente en PHP Ejemplo Recomendado
RECU-0610 Expresiones regulares basadas en PERL (PCRE) Experiencia Obligatorio
RECU-0599 Fallos al filtrar la sintaxis en Java Ejemplo Obligatorio
RECU-0604 Filtrado de entrada de datos en Java Ejemplo Recomendado
RECU-0615 Inclusión de ficheros en PHP (allow_url_fopen) Experiencia Obligatorio
RECU-0578 Inyección en Hibernate con SQL Ejemplo Obligatorio
RECU-0543 Inyección en LDAP en Java Ejemplo Obligatorio
RECU-0575 Inyección sobre el sistema operativo Técnica Obligatorio
RECU-0613 Llamadas a programas externos en PHP Ejemplo Obligatorio
RECU-0609 Manejo de cabeceras HTTP (inyección CRLF) Ejemplo Obligatorio
RECU-0608 Manejo de identificadores de recursos Ejemplo Obligatorio
RECU-0612 Métodos de control de seguridad privados o finales Ejemplo Obligatorio
RECU-0605 Neutralización de datos en las expresiones XPATH Ejemplo Obligatorio
RECU-0606 Neutralización de datos en las expresiones XQuery Ejemplo Obligatorio
RECU-0600 Obtención de información de la lista de procesos del sistema en Java Ejemplo Obligatorio
RECU-0670 Uso de check_plain() y t() para limpiar los caracteres de las salida en PHP Ejemplo Obligatorio
RECU-0671 Uso de la función filter_xss() para proteger de los ataques de Cross-Site Scripting en PHP Ejemplo Obligatorio
RECU-0614 Validación de los datos de entrada en PHP Ejemplo Obligatorio
RECU-0619 Validación de salidas en Java Ejemplo Obligatorio