Codificación y Validación de entrada/salida
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
Código | Título | Tipo | Carácter | |
---|---|---|---|---|
PAUT-0203 | Campos ocultos | Pauta | Directriz | No Recomendada |
LIBP-0273 | Desbordamiento del buffer de memoria | Libro de pautas | Directriz | Obligatoria |
PAUT-0196 | Exposición del código fuente | Pauta | Directriz | Recomendada |
LIBP-0276 | Inyección de código basada en SQL | Libro de pautas | Directriz | Obligatoria |
LIBP-0277 | Inyección de código sobre argumentos | Libro de pautas | Directriz | Obligatoria |
PAUT-0252 | Limpieza de documentos | Pauta | Directriz | Obligatoria |
PAUT-0249 | Métodos de control de seguridad privados o finales | Pauta | Directriz | Obligatoria |
PAUT-0248 | Protección de la información en los procesos del sistema | Pauta | Directriz | Obligatoria |
PAUT-0251 | Pruebas con datos reales | Pauta | Directriz | No Recomendada |
LIBP-0309 | Referencia directa a objetos | Libro de pautas | Directriz | Obligatoria |
PAUT-0208 | Salida de las funciones | Pauta | Directriz | Obligatoria |
LIBP-0255 | Validación de los datos de entrada | Libro de pautas | Directriz | Obligatoria |