8. Programación Segura Criterios de seguridad para incrementar la seguridad del código producido. Capítulo basado en el documento OWASP: Secure Coding Cheat Sheet, publicado por Owasp Foundation. 8.1 Validar Todas las Entradas. Implementar correctamente un módulo de validación de entradas es un desafío complejo. Se recomienda utilizar librerías de validación de código abierto, reconocidas y con mantenimiento activo para el lenguaje elegido. Debe ejecutarse una validación sobre todas las entradas que lea la aplicación, en un equipo confiable y configurado en forma segura. Nunca debe confiarse en un control ejecutado en un equipo del usuario. Siempre se debe realizar la validación antes de procesar los datos de entrada. Es preferible realizar la validación utilizando un criterio de “lista blanca”: prohibir todo y permitir deliberadamente casos aceptables. Cuando una validación falla, debe rechazarse los datos de entrada. Es una buena práctica centralizar las rutinas de validación para facilitar su mantenimiento. entrada_1_sucia = parametro_get() query_base_datos(entrada_1_sucia) // NUNCA procesar entradas sin antes validarlas. entrada_1_sucia = parametro_get() entrada_1_limpia = validar(entrada_1_sucia) query_base_datos(entrada_1_limpia) Esta recomendación resuelve los problemas vinculados a ataques de inyección, XSS (Cross Site Scripting). 8.2 Codificar apropiadamente todas las salidas. En ocasiones se usan entradas controladas externamente para generar contenido dinámico. Se debe controlar estrictamente el formato y los posibles valores de los resultados de módulos hacia componentes externos. nombre_usuario_sucio = parametro_get() generar_html(nombre_usuario_sucio) // Permite atacar el navegador de los usuarios. nombre_usuario_sucio = parametro_get() nombre_usuario_limpio = codificar(nombre_usuario_sucio) generar_html(nombre_usuario_limpio) Esta recomendación resuelve los problemas vinculados a ataques XSS: phishing, robo de sesiones, robo de información privada, distribución de malware. IF-2021-76718462-APN-DNCIB#JGM Página 18 de 35

Select target paragraph3

Connect to a paragraph
Connect to an entity
Disable highlights
Add to table of contents