Desarrollo seguro en ingeníeria del software. Aplicaciones seguras con android, nodejs, phyton y C++. Ortega José - 1era Ed. - Colombia Alfaomega Grupo Editor 2020 - 386 Pág. 23 x 17 cm.

Capítulo 1. Introducción al desarrollo seguro:
1.1. Propiedades del software seguro,
1.2. Principios de diseño seguro de aplicaciones,
1.2.1. Minimizar el área de la superficie de ataque,
1.2.2. Seguridad por defecto,
1.2.3. Privilegios mínimos,
1.2.4. Validación de datos de entrada,
1.2.5. Defensa en profundidad,
1.2.6. Control seguro de errores,
1.2.7. Separación de funciones,
1.2.8. Evitar la seguridad por oscuridad,
1.3. Análisis de requisitos de seguridad.
- Capítulo 2. Aspectos fundamentales de desarrollo seguro:
2.1. Controles proactivos,
2.2. OWASP (Open Web Application Security Project),
2.3. OWASP Mobile Security Project,
2.4. Controles proactivos OWASP,
2.4.1. Verificación de la seguridad desde las primeras etapas de desarrollo,
2.4.2. Validación de las entradas del cliente,
2.4.3. Desbordamientos del búfer,
2.4.4. Gestión de sesiones,
2.4.5. Implementación de controles de acceso,
2.4.6. Implementación de controles de identidad y autenticación,
2.4.7. Autenticación por múltiples factores,
2.4.8. Manejo de errores y excepciones,
2.5. Ataques en aplicaciones web,
2.5.1. Vectores de ataque,
2.5.2. Cross-site scripting (XSS),
2.5.3. Cross-site request forgery (CSRF),
2.5.4. Seguridad en las redirecciones,
2.6. SQL Injection: parametrización de las consultas en bases de datos,
2.6.1. Introducción a SQL Injection,
2.6.2. Problemas que pueden causar este tipo de ataques,
2.6.3. Ejemplo de inyección de SQL,
2.6.4. Escapar caracteres especiales utilizados en las consultas SQL,
2.6.5. Delimitación de los valores de las consultas,
2.6.6. Uso de sentencias preparadas parametrizadas,
2.6.7. Uso de procedimientos almacenados,
2.7. Seguridad en AJAX.
- Capítulo 3. Herramientas OWASP:
3.1. DefectDojo,
3.2. SonarQube,
3.2.1. El cuadro de mando de SonarQube,
3.2.2. Issues por nivel de criticidad,
3.2.3. Perfiles de calidad,
3.2.4. Reglas SonarQube,
3.2.5. Informes de seguridad en SonarQube,
3.2.6. SonarQube Plugins,
3.2.7. Vulnerabilidades más comunes y explotadas,
3.3. Find Security Bugs,
3.3.1. Inyección potencial de Android SQL,
3.3.2. Abrir un socket sin cifrar,
3.4. LGTM,
3.5. OSS Index,
3.6. Snyk,
3.7. Otras herramientas de análisis estático,
3.8. Checklist de seguridad.
- Capítulo 4. Seguridad en aplicaciones Android:
4.1. Introducción al protocolo HTTPS,
4.1.1. Conceptos básicos sobre certificados,
4.1.2. Despliegues en producción,
4.1.3. Certificado de servidor autofirmado,
4.1.4. CA no encontrada dentro de la cadena de certificados,
4.1.5. Configuración de seguridad,
4.1.6. Actualización de proveedores criptográficos,
4.1.7. Android Certificate Pinning,
4.1.8. Cifrado extremo a extremo,
4.1.9. Firmando una aplicación Android,
4.2. Principios fundamentales de desarrollo en Android,
4.2.1. Componentes en Android,
4.2.2. Android Lint,
4.3. Ingeniería inversa en Android,
4.3.1. ADB (Android Debug Bridge),
4.3.2. Dex2jar,
4.3.3. JD-GUI,
4.3.4. jadx - Dex to Java decompiler,
4.3.5. Apktool,
4.3.6. Código smali y Mobylizer,
4.3.7. Androwarn,
4.3.8. Mobile Security Framework (MobSF),
4.3.9. ClassyShark,
4.3.10. Drozer,
4.3.11. QARK,
4.3.12. SanDroid,
4.3.13. Yaazhini,
4.4. Buenas prácticas de desarrollo seguro en Android,
4.4.1. Seguridad en AndroidManifest.xml,
4.4.2. Modelo de permisos en Android,
4.4.3. Asegurando la capa de aplicación,
4.4.4. Evitar almacenar datos confidenciales en el dispositivo,
4.4.5. Uso adecuado del componente WebView,
4.4.6. Usar método POST para el envío de datos confidenciales,
4.4.7. Validar los certificados SSL/TLS,
4.4.8. Restricción de uso de la aplicación a determinados dispositivos,
4.4.9. Gestión de logs,
4.4.10. Comprobar la conexión de red,
4.4.11. Realizar operaciones de red en un hilo separado,
4.4.12. Permisos de localización,
4.4.13. Optimizar el código en Android y memoria caché,
4.4.14. Implementación segura de proveedores de contenido,
4.4.15. Almacenamiento de preferencias compratidas (SharedPreferences),
4.4.16. Almacenamiento seguro de preferencias,
4.4.17. Almacenamiento en ficheros,
4.4.18. Almacenamiento externo,
4.4.19. Almacenamiento segura de Intents,
4.4.20. Almacenamiento segura de servicios,
4.4.21. Almacenamiento segura de broadcast receivers,
4.4.22. Almacenamiento segura de content providers,
4.4.23. Invocar actividades de forma segura,
4.4.24. Implementar almacenamiento de datos seguro,
4.4.25. Algoritmos criptográficos,
4.4.26. Uso de java.util.String para almacenar información sensible,
4.4.27. Proteger la configuración de la aplicación,
4.4.28. Cifrado en base de datos SQLite,
4.4.29. Optimización y ofuscación del código con ProGuard,
4.5. Metodologías OASAM.

- Capítulo 5. Seguridad en proyectos NodeJS:
5.1. Introducción a NodeJS,
5.2. Modelo Event-Loop,
5.3. Gestión de paquetes,
5.4. Programación asíncrona,
5.5. Problema del código piramidal,
5.6. Módulo para administrar el sistema de archivos,
5.7. Módulo http,
5.8. Utilización del Middleware Express,
5.8.1. Middleware de nivel de aplicación,
5.8.2. Middleware de nivel de direccionamiento,
5.8.3. Middleware de terceros,
5.9. Autenticación de NodeJS,
5.9.1. Auth0,
5.9.2. PassportJS,
5.10. OWASP top en NodeJS,
5.10.1. OWASP NodeGOAT,
5.10.2. Inyección de código,
5.10.3. Función eval,
5.10.4. Ataque de denegación de servicio,
5.10.5. Uso de patrones y expresiones regulares,
5.10.6. Acceso al sistema de ficheros,
5.10.7. Inyección de SQL,
5.10.8. Inyección de NoSQL,
5.10.9. Inyección de logs,
5.10.10. Gestión de la sesión y autenticación,
5.10.11. Protegiendo credenciales de usuarios,
5.10.12. Tiempos de espera de sesión y protección de cookies,
5.10.13. Secuestro de sesión (Session hijacking)
5.10.14. Módulo helmet,
5.10.15. Cross-site scripting (XSS),
5.10.16. Referencias de objetos directos inseguros,
5.10.17. Mala configuración de seguridad,
5.10.18. Deshabilitar fingerprinting,
5.10.19. Exposición de datos sensibles,
5.10.20. Configuración SSL/TLS,
5.10.21. Forzar peticiones HTTPS,
5.10.22. Falta de control de acceso,
5.10.23. Redirecciones no validadas,
5.10.24. Denegación de servicio mediante expresiones regulares,
5.10.25. Validar datos de entrada con validator,
5.10.26. Validar datos de entrada con express-validator,
5.10.27. Configuración de cabeceras HTTP,
5.10.28. Política de seguridad de contenido (CSP),
5.10.29. Cross-site request forgery (CSRF),
5.10.30 Ejecutar código JavaScript de forma aislada,
5.10.31. Eso de componentes con vulnerabilidades conocidas,
5.10.32. NodeJsScan.

- Capítulo 6. Seguridad en proyecto Python,
6.1. Componentes inseguros en Python,
6.2. Validación incorrecta de entrada/salida,
6.3. Función eval0,
6.4. Serialización y deserialización de datos con pickle,
6.5. Ataques de inyección de entrada,
6.5.1. Inyección de comandos,
6.5.2. Inyección de SQL,
6.6. Acceso seguro al sistema de archivos y ficheros temporales,
6.7. Inyección de XSS,
6.8. Inyección de SSTI,
6.9. Servicios para comprobar la seguridad de proyectos Python,
6.9.1. Pyunp,
6.9.2. LGTM en proyectos Python,
6.9.3. Sanitización de las URL,
6.9.4. Uso de un algoritmo criptográfico roto o débil,
6.9.5. Peticiones con resquest sin validación de certificado,
6.9.6. Uso de la versión insegura SSL/TLS,
6.9.7. Deserialización de entrada no confiable,
6.9.8. Vulnerabilidades de XSS,
6.9.9. Exposición de información a través de una excepción,
6.9.10. Conexión con hots remotos mediante SSH utilizando Paramiko,
6.10. Análisis estático de código Python,
6.10.1. Python Taint,
6.10.2. Bandit,
6.10.3. Hawkeye,
6.10.4. DLint,
6.11. Gestión de dependencias,
6.11.1. Instalación de dependencias,
6.11.2. Requires.io,
6.11.3. Safety,
6.11.4. Paquetes maliciosos en PyPI,
6.12. Python code checkers,
6.12.1. Pyflakes,
6.12.2. PyLint,
6.13. Escáner de seguridad de aplicaciones web,
6.13.1. WAScan,
6.13.2. SQLmap,
6.13.3. XSScrapy,
6.14. Seguridad en Django,
6.14.1. Protección ante ataques XSS,
6.14.2. Protección ante ataques CSRF,
6.14.3. Protección ante inyección de SQL,
6.14.4. Protección de clickjacking,
6.14.5. SSL/HTTPS,
6.15. Otras herramientas de seguridad,
6.15.1. Yosai,
6.15.2. Flask-Security,
6.15.3. OWASP Python Security Project.

- Capítulo 7. Análisis estático y dinámico en aplicaciones c/c++:
7.1. Análisis estático,
7.1.1. Code Analyzer,
7.2. Análisis estático de código C/C++,
7.2.1. Flawfinder,
7.2.2. Clang,
7.2.3. Uso de variables sin inicializar,
7.2.4. Uso inseguro de funciones,
7.2.5. RATS,
7.2.6. Vulnerabilidad cadena de formato (format string)
7.2.7. Pscan para detectar vulnerabilidades format string,
7.2.8. Buffer overflow,
7.2.9. Tipos de heap overflow,
7.2.10. Vulnerabilidad use after free,
7.2.11. Dereference after free,
7.2.12. Vulnerabilidad double free,
7.2.13. Vulnerabilidad off by one,
7.2.14. Vulnerabilidades race condition,
7.2.15. Vulnerabilidad integer overflow,
7.2.16. Uso de StackOverflow,
7.3. Análisis dinámico,
7.3.1. Análisis dinámico en C/C++ con Valgrind,
7.4. Herramientas de análisis.
- Capítulo 8. Metodologías de desarrollo,
8.1. Metodologías de desarrollo de software seguro,
8.1.1. Correctness by Construction (CbyC),
8.1.2. Security Development Lifecycle (SDLC)
8.1.3. Fases de la metodología SDLC,
8.1.4. Vulnerabilidades en SDLC,
8.1.5. Tipos de SDLC,
8.1.5.1. Microsoft Trustworthy Computing SDL,
8.1.5.2. CLASP,
8.1.5.3. TSP-Secure,
8.1.5.4. Oracle Software Security Assurance,
8.1.5.5. Propuesta híbrida,
8.1.6. Tipos de pruebas de seguridad SDLC,
8.1.7. Conclusiones de ciclo de vida de desarrollo de software (SDLC),
8.2. Modelado de amenazas ,
8.2.1. Modelado de amenazas con STRIDE,
8.3. Perspectiva del atacante,
8.4. Patrones de ataque,
8.5. OWASP Testing Framework y perfiles para pruebas de seguridad,
8.6. OWASP Security Knowledge Framework (SKF),
8.7. Seguridad en ingeniería del software,
8.8. Bibliografía y fuentes de información,
8.9. Conclusiones.
- Capítulo 9. Glosario de términos.



978-958-778-638-5

Desarrollo de aplicaciones web