Local cover image
Local cover image

Desarrollo seguro en ingeniería del software : José Manuel Ortega Candel. aplicaciones seguras con android, nodejs, python y c**.

By: Material type: TextTextPublication details: Bogotá : Alpha Editorial, 2020.Edition: Primera ediciónDescription: 386 páginas. Ilustraciones. 24 cmContent type:
  • Texto
Media type:
  • Sin mediación
Carrier type:
  • Volumen
ISBN:
  • 9789587786385
Subject(s): DDC classification:
  • 005.1  O771 2020 23
Contents:
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 compartidas (SharedPreferences). 4.4.16 Almacenamiento seguro de preferencias. 4.4.17 Almacenamiento en ficheros. 4.4.18 Almacenamiento externo. 4.4.19 Implementación segura de Intents. 4.4.20 Implementación segura de servicios. 4.4.21 Implementación segura de broadcast receivers. 4.4.22 Implementación 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ía 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 en NodeJS. 5.9.1 Auth0. 5.9.2 PassportJS. 5.10 OWASP top 10 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 usuario. 5.10.12 Tiempo 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 Configurando 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 Uso de componentes con vulnerabilidades conocidas. 5.10.32 NodeJsScan.
Capítulo 6. Seguridad en proyectos Python 6.1 Componentes inseguros en Python. 6.2 Validación incorrecta de entrada/salida. 6.3 Función eval(). 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 Pyup. 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 requests 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 hosts 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 Require .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 de 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 Análisis estático de código C/C++.. 7.2.1 Flawfinder 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
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 SDC. 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.
Tags from this library: No tags from this library for this title. Log in to add tags.
Star ratings
    Average rating: 0.0 (0 votes)
Holdings
Item type Current library Collection Call number Materials specified Copy number Status Notes Date due Barcode
Libro de Reserva Libro de Reserva Biblioteca William Corredor Gómez. Sede Cosmos (Barranquilla) Reserva 005.1 O771 2020 (Browse shelf(Opens below)) Ingeniería de Sistemas / Barranquilla Ej. 1 Available Colección 1, Isla 1, Lado A, Módulo 4 301257840

Incluye índice, página 9

Incluye glosario de términos.

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 compartidas (SharedPreferences).
4.4.16 Almacenamiento seguro de preferencias.
4.4.17 Almacenamiento en ficheros.
4.4.18 Almacenamiento externo.
4.4.19 Implementación segura de Intents.
4.4.20 Implementación segura de servicios.
4.4.21 Implementación segura de broadcast receivers.
4.4.22 Implementación 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ía 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 en NodeJS.
5.9.1 Auth0.
5.9.2 PassportJS.
5.10 OWASP top 10 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 usuario.
5.10.12 Tiempo 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 Configurando 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 Uso de componentes con vulnerabilidades conocidas.
5.10.32 NodeJsScan.

Capítulo 6. Seguridad en proyectos Python
6.1 Componentes inseguros en Python.
6.2 Validación incorrecta de entrada/salida.
6.3 Función eval().
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 Pyup.
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 requests 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 hosts 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 Require .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 de 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
Análisis estático de código C/C++..
7.2.1 Flawfinder
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

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 SDC.
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.

There are no comments on this title.

to post a comment.

Click on an image to view it in the image viewer

Local cover image