4
Lo más leído
6
Lo más leído
Índice 7
Índice
Capítulo I
Preliminar....................................................................................................13
1. Introducción................................................................................................................13
1.1 Aplicaciones Web................................................................................................................. 14
1.2 Viendo una Página Web....................................................................................................... 15
1.3 Seguridad............................................................................................................................. 16
1.4 Para quien va dirigido el Libro............................................................................................ 16
2. La Arquitectura de las Aplicaciones Web................................................................17
2.1 La Arquitectura de la Aplicación......................................................................................... 17
2.2 Patrón MVC......................................................................................................................... 18
2.3 Capas de la Aplicación......................................................................................................... 19
2.4 Aplicación WebShop............................................................................................................ 20
3. Servicios Web en Java................................................................................................21
3.1 Tipos de Servicios Web........................................................................................................ 22
Capítulo II
Creación del Proyecto.................................................................................25
1. Configurar el Proyecto Java en Eclipse....................................................................25
1.1 Crear el Proyecto.................................................................................................................. 25
2. Definición del Modelo de Datos.................................................................................32
2.1 Bases de Datos..................................................................................................................... 32
2.2 Lenguajes de Acceso a Bases de Datos................................................................................ 33
2.3 Estructura de una Base de Datos.......................................................................................... 34
2.4 Modelo de Datos de WebShop............................................................................................. 34
2.5 Crear la Base de Datos de WebShop en MySQL................................................................. 37
Capítulo III
Introducción a Spring.................................................................................41
1. Introducción a Spring................................................................................................41
8 Spring Boot & Angular: Desarrollo de WebApps Seguras - Tomo 2
1.1 Beneficios de usar el Framework Spring............................................................................. 41
1.2 Principio de Inversión de Dependencias.............................................................................. 42
1.3 Inversión de Control (IoC)................................................................................................... 44
2. Arquitectura................................................................................................................45
2.1 Core Container..................................................................................................................... 45
2.2 Acceso a Datos / Integración................................................................................................ 46
2.3 Web....................................................................................................................................... 46
2.4 Misceláneos.......................................................................................................................... 46
3. Contenedor IoC de Spring.........................................................................................47
3.1 Configurar el contexto de Spring......................................................................................... 48
4. Beans............................................................................................................................50
4.1 Ámbito del Bean.................................................................................................................. 51
4.2 Ciclo de Vida del Bean......................................................................................................... 53
5. Inyección de Dependencias........................................................................................54
5.1 Inyección de Dependencias Basada en Constructor............................................................. 56
5.2 Inyección de Dependencias Basada en Método Setter......................................................... 57
5.3 Inyección de Dependencias Basada en Campo.................................................................... 57
5.4 Errores típicos...................................................................................................................... 58
Capítulo IV
Spring Boot..................................................................................................65
1. Introducción................................................................................................................65
2. Instalación...................................................................................................................66
2.1 Clase de Arranque de la Aplicación..................................................................................... 68
2.2 Archivo de configuración..................................................................................................... 69
3. Compilar el Proyecto..................................................................................................69
4. Ejecutando el Proyecto..............................................................................................73
5. Estructurar el código..................................................................................................76
Capítulo V
Spring-REST...............................................................................................79
1. Introducción a los Servicios REST...........................................................................79
2. Recursos......................................................................................................................80
3. Reglas de la Arquitectura REST...............................................................................81
4. REST y HTTP.............................................................................................................82
5. Servicios Web RESTful..............................................................................................83
Índice 9
6. Controlador REST en Spring....................................................................................84
6.1 Definir un método de acceso................................................................................................ 84
7. Crear nuestros primeros servicios web REST.........................................................86
7.1 Casos de Uso de la aplicación WebShop............................................................................. 86
7.2 Servicios web para las Categorías........................................................................................ 87
7.3 Servicios web para los Libros.............................................................................................. 94
7.4 Servicios web para la gestión del Carrito de la Compra.................................................... 101
7.5 Servicios web para la gestión de Pedidos.......................................................................... 110
Capítulo VI
Introducción a JPA....................................................................................121
1. Introducción..............................................................................................................121
2. ORM..........................................................................................................................122
3. JPA.............................................................................................................................123
3.1 Arquitectura JPA................................................................................................................. 125
3.2 Entidades............................................................................................................................ 125
3.3 Ciclo de Vida...................................................................................................................... 128
3.4 Relaciones.......................................................................................................................... 128
Capítulo VII
Spring Data................................................................................................141
1. Introducción..............................................................................................................141
2. Spring Data JPA.......................................................................................................142
2.1 Introducción a los repositorios de Spring Data.................................................................. 143
3. Caso Práctico: Implementar la capa de Acceso a Datos en WebShop.................144
3.1 Configuración del proyecto................................................................................................ 145
3.2 Creación de las Entidades.................................................................................................. 147
3.3 Repositorios JPA................................................................................................................ 154
3.4 Caso práctico: Creación de las clases de Acceso a Datos.................................................. 159
4. Probar los Servicios Web ........................................................................................175
Capítulo VIII
Autenticación y Autorización...................................................................179
1. Concepto de autenticación y autorización.............................................................179
2. Autenticación en el lado del Servidor.....................................................................181
2.1 HTTP Basic........................................................................................................................ 181
2.2 Autenticación basada en Cookies....................................................................................... 181
2.3 Autenticación basada en Tokens........................................................................................ 183
10 Spring Boot & Angular: Desarrollo de WebApps Seguras - Tomo 2
3. JSON Web Tokens (JWT)........................................................................................183
3.1 ¿Qué es un Token?............................................................................................................. 183
3.2 ¿Qué son los JSON Web Tokens?...................................................................................... 184
3.3 ¿Cómo se utiliza los JSON Web Tokens?.......................................................................... 184
3.4 Ciclo de Vida de un JWT................................................................................................... 185
Capítulo IX
Configurar la Autenticación en WebShop..............................................187
1. Capa de Datos...........................................................................................................187
1.1 Modelo de Datos................................................................................................................ 188
1.2 Scripts SQL........................................................................................................................ 189
2. Back-End...................................................................................................................190
2.1 Configurar el proyecto para incluir Spring Security y JWT.............................................. 192
2.2 Configurar el Repositorio de Datos.................................................................................... 193
2.3 Crear un Servicio para autentificar los usuarios................................................................. 195
2.4 Configurar el JSON Web Token......................................................................................... 197
2.5 JWTAuthorizationFilter..................................................................................................... 199
2.6 Crear la clase de configuración de Spring Security........................................................... 201
2.7 Controlador para añadir un usuario.................................................................................... 205
3. Front-End..................................................................................................................206
3.1 Servicio de Autenticación.................................................................................................. 206
3.2 Crear el componente de Login........................................................................................... 209
3.3 Crear un guarda para proteger las rutas en Angular........................................................... 213
3.4 Modificar las Rutas para proteger el módulo de Administración....................................... 215
3.5 Añadir el enlace para cerrar sesión..................................................................................... 217
3.6 Modificar los servicios Ajax protegidos para incluir el token JWT................................... 218
Capítulo X
Instalar HTTPS en el Servidor................................................................221
1. Obtener un certificado SSL.....................................................................................223
2. Habilitar HTTPS en Spring Boot............................................................................225
3. Redireccionar HTTP a HTTPS...............................................................................227
Capítulo XI
SQL Injection............................................................................................231
1. Acerca de SQL Injection..........................................................................................231
2. Validación de los datos de entrada de la API REST..............................................233
2.1 Manejo de Excepciones..................................................................................................... 234
Índice 11
2.2 Usando @ControllerAdvice............................................................................................... 235
2.3 Implementar el ControllerAdvice...................................................................................... 235
2.4 Validación........................................................................................................................... 237
Capítulo XII
Cross-Site Request Forgery.....................................................................249
1. Introducción al CSRF..............................................................................................249
2. Consejos para evitar el CSRF.................................................................................251
3. Tokens para combatir el CSRF...............................................................................251
4. Same Site Cookies.....................................................................................................252
5. Caso de Uso de WebShop.........................................................................................252
6. ¿Qué pasa si no se usa Token JWT?.......................................................................254
Capítulo XIII
Cross Site Scripting (XSS)........................................................................255
1. ¿Cómo se inyecta el JavaScript malicioso?............................................................255
2. ¿Por qué es malicioso JavaScript?..........................................................................256
3. Actores en un ataque XSS........................................................................................256
3.1 Un ejemplo de un escenario de ataque............................................................................... 257
3.2 Ataque XSS Reflejado........................................................................................................ 258
3.3 Ataque XSS Basado en DOM............................................................................................ 259
4. ¿Cómo prevenir el ataque XSS?.............................................................................260
5. ¿Cómo evitar el ataque XSS desde Angular?........................................................263
5.1 Modelo de seguridad XSS de Angular............................................................................... 264
5.2 Sanitización y contextos de Seguridad............................................................................... 264
5.3 Evitar el uso directo de la API de DOM............................................................................ 265
6. Política de Seguridad de Contenido........................................................................266
6.1 Aplicación a WebShop....................................................................................................... 267
Capítulo XIV
Despliegue de la Aplicación en Producción............................................269
1. Introducción..............................................................................................................269
2. Integrar el Front-End...............................................................................................269
2.1 Crear el módulo para el Front-End: WebShopWeb............................................................ 270
2.2 Configurar el plugin para compilar el Front-End............................................................... 272
2.3 Configurar el proyecto WebShopServer............................................................................. 274
12 Spring Boot & Angular: Desarrollo de WebApps Seguras - Tomo 2
3. Habilitar el control de las rutas en el Back-End....................................................276
3.1 Integrar las URLs de Angular con Spring Security............................................................ 277
4. Generar el binario del servidor...............................................................................278
4.1 Configuración de perfiles................................................................................................... 278
4.2 Generación del ejecutable.................................................................................................. 279
4.3 Ejecución de la aplicación web.......................................................................................... 279
4.4 Depuración de la aplicación web....................................................................................... 279
Apéndice
Instalación del Software Requerido........................................................281
1. Instalar el Kit de Desarrollo de Java......................................................................281
2. Instalar Maven..........................................................................................................282
3. Instalar Eclipse.........................................................................................................284
3.1 Configurar el JRE en Eclipse............................................................................................. 284
3.2 Configurar Maven en Eclipse............................................................................................. 286
4. Instalar MySQL........................................................................................................287
5. Instalar NodeJS........................................................................................................291
6. Instalar Visual Studio Code.....................................................................................291
7. Instalación y Uso de Postman..................................................................................291
7.1 Instalación de Postman....................................................................................................... 292
7.2 Uso de Postman.................................................................................................................. 293
7.3 Interfaz de Usuario de Postman......................................................................................... 294
7.4 Ejemplo de ejecución de un servicio web.......................................................................... 296
7.5 Ejemplo de ejecución de un servicio web con parámetros en la URL............................... 297
7.6 Ejemplo de ejecución de un servicio web con parámetros en el Body.............................. 298
Índice alfabético........................................................................................301
Índice de imágenes y tablas......................................................................305

Más contenido relacionado

PDF
Índice del libro "Spring Boot & Angular: Desarrollo de Webapps seguras" de 0x...
PPTX
Spring boot Introduction
PDF
Spring boot
PDF
Integrating React.js Into a PHP Application: Dutch PHP 2019
PDF
Getting started with karate dsl
PDF
Índice de libro: "Empire: Hacking Avanzado en el Red Team"
PDF
REST APIs with Spring
PPT
Test Driven Development
Índice del libro "Spring Boot & Angular: Desarrollo de Webapps seguras" de 0x...
Spring boot Introduction
Spring boot
Integrating React.js Into a PHP Application: Dutch PHP 2019
Getting started with karate dsl
Índice de libro: "Empire: Hacking Avanzado en el Red Team"
REST APIs with Spring
Test Driven Development

La actualidad más candente (17)

PDF
Webinar: Desenvolvendo projetos com ESP32
PPTX
Security: Odoo Code Hardening
PDF
Spring Framework Tutorial | Spring Tutorial For Beginners With Examples | Jav...
PDF
Important React Hooks
PPTX
ASP.NET Core MVC + Web API with Overview
PDF
Java EE Security API - JSR375: Getting Started
PPTX
Q-403 - radios Vhf (Falcon III).pptx hhhh
PDF
Cucumber tutorial
PPTX
Test-Driven Development In Action
PDF
Introduction to Spring Framework
PDF
Spring Boot
PDF
Api security-testing
PDF
Manual Prático do Faturista - 2ª Ed. - IOB e-Store
PPTX
CREACION DE TRIGGERS.pptx
PDF
Apostila parametrizacao geral_winthor
PDF
Manual de servico_lavadoras_electrolux_top_load
PDF
Workshop React.js
Webinar: Desenvolvendo projetos com ESP32
Security: Odoo Code Hardening
Spring Framework Tutorial | Spring Tutorial For Beginners With Examples | Jav...
Important React Hooks
ASP.NET Core MVC + Web API with Overview
Java EE Security API - JSR375: Getting Started
Q-403 - radios Vhf (Falcon III).pptx hhhh
Cucumber tutorial
Test-Driven Development In Action
Introduction to Spring Framework
Spring Boot
Api security-testing
Manual Prático do Faturista - 2ª Ed. - IOB e-Store
CREACION DE TRIGGERS.pptx
Apostila parametrizacao geral_winthor
Manual de servico_lavadoras_electrolux_top_load
Workshop React.js
Publicidad

Similar a Índice de libro: "Spring Boot & Angular: Desarrollo de WebApps Seguras. Tomo 2: Spring Boot" (20)

PDF
Diario Digital Opinasistemas
PDF
Índice del libro "Hacking Web Technologies"
PDF
Apuntes prac
PDF
15225891 Manual De Integracion V10
PDF
Tutorial moodle, paideia pucp
DOCX
Indice
PDF
Manual abies 2
PDF
Manual de-s10-2005
PDF
Manual de s10_2005
PDF
Claudio Adrian Natoli - Guia internet para periodistas
PDF
Claudio Natoli Michieli - Guía de internet para periodistas
PDF
Adrian Natoli Michieli - Guia internet para periodistas
PDF
1.memoria
PDF
Tutorial de computación básica 2
PDF
Manual - Excel con Macros.pdf
PDF
Contenido
PDF
MGTI Café L'illo
PDF
Índice del libro "Hardening de servidores GNU / Linux 5ª Edición (Gold Edition)"
PDF
Openbravo manual-de-usuario-v1.1
PDF
Diario Digital Opinasistemas
Índice del libro "Hacking Web Technologies"
Apuntes prac
15225891 Manual De Integracion V10
Tutorial moodle, paideia pucp
Indice
Manual abies 2
Manual de-s10-2005
Manual de s10_2005
Claudio Adrian Natoli - Guia internet para periodistas
Claudio Natoli Michieli - Guía de internet para periodistas
Adrian Natoli Michieli - Guia internet para periodistas
1.memoria
Tutorial de computación básica 2
Manual - Excel con Macros.pdf
Contenido
MGTI Café L'illo
Índice del libro "Hardening de servidores GNU / Linux 5ª Edición (Gold Edition)"
Openbravo manual-de-usuario-v1.1
Publicidad

Más de Chema Alonso (20)

PDF
Índice del libro "Cuentos para Minihackers II: Un verano alucinante"
PDF
Índice del libro "Hacking & Pentesting con Inteligencia Artificial" de 0xWord
PDF
Informe de Análisis Forense hecho por VerifAI
PDF
Índice del libro: "Cuentos para minihackers I: Iniciando Sesión"
PDF
Índice del libro "Arquitectura de Seguridad y Patrones de Diseño Seguro" de 0...
PDF
BlackHat Europe 2024 Arsenal: level_up! & Web3 Security WarGames
PDF
Índice del Libro "Hacking Home Devices I: PoCs & Hacks Just for Fun!" de 0xWord
PDF
Índice del libro "The Art of Pentesting" de 0xWord
PDF
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
PDF
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
PDF
Índice de libro "Historias Cortas sobre Fondo Azul" de Willy en 0xWord
PDF
Índice del libro: Máxima Seguridad en Windows: Secretos Técnicos. 6ª Edición ...
PDF
Índice del libro "Hacking Web3: Challenge Acepted!" de 0xWord
PDF
Índice del libro "Amazon Web Services: Hardening de Infraestructuras Cloud Co...
PDF
Índice del Libro "Ciberestafas: La historia de nunca acabar" (2ª Edición) de ...
PDF
Índice del Libro "Storytelling para Emprendedores"
PPTX
Digital Latches for Hacker & Developer
PDF
WhatsApp INT: OSINT en WhatsApp
PDF
Índice del libro "De la Caverna al Metaverso" de 0xWord.com
PDF
20º Máster Universitario de Ciberseguridad UNIR
Índice del libro "Cuentos para Minihackers II: Un verano alucinante"
Índice del libro "Hacking & Pentesting con Inteligencia Artificial" de 0xWord
Informe de Análisis Forense hecho por VerifAI
Índice del libro: "Cuentos para minihackers I: Iniciando Sesión"
Índice del libro "Arquitectura de Seguridad y Patrones de Diseño Seguro" de 0...
BlackHat Europe 2024 Arsenal: level_up! & Web3 Security WarGames
Índice del Libro "Hacking Home Devices I: PoCs & Hacks Just for Fun!" de 0xWord
Índice del libro "The Art of Pentesting" de 0xWord
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice de libro "Historias Cortas sobre Fondo Azul" de Willy en 0xWord
Índice del libro: Máxima Seguridad en Windows: Secretos Técnicos. 6ª Edición ...
Índice del libro "Hacking Web3: Challenge Acepted!" de 0xWord
Índice del libro "Amazon Web Services: Hardening de Infraestructuras Cloud Co...
Índice del Libro "Ciberestafas: La historia de nunca acabar" (2ª Edición) de ...
Índice del Libro "Storytelling para Emprendedores"
Digital Latches for Hacker & Developer
WhatsApp INT: OSINT en WhatsApp
Índice del libro "De la Caverna al Metaverso" de 0xWord.com
20º Máster Universitario de Ciberseguridad UNIR

Último (20)

PDF
tecnología educativa, inicial, nivel básico y .pdf
PDF
Control total para proteger tus activos en base al riesgo
PPTX
Desarrollo Seguro en un mundo multi-stack con Pruebas de Seguridad de Forma A...
PDF
Gtd Infraestructura Digital de Misión Critica
PPTX
IMPORTANCIA EMPRESARIAL , TIPOS DE ESTRUCCTURAp.pptx
PPTX
Gestión de la exposición, cómo anticiparse a los ciberataques
DOCX
Planeaciónnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
PDF
Especificación Técnica - Cable TSCGEWOEU _ Feichun Cable Co., Ltd_.pdf
PPTX
Cumplimiento de ISO 27002 Nubes Púb.pptx
PDF
Ventajas-de-Microsoft-365-Copilot-Infografia (1).pdf
PDF
Tipos de capacitores o condensadores .pdf
PDF
Ciberataques, Normativas y Protección: Ayudando a las Entidades Financieras a...
PDF
Ronmy Cañas Venezuela_ Tecnología e Inclusión Social.pdf
PPTX
Más Allá del SOC Tradicional: IA y Automatización para Cumplimiento y Respues...
PDF
Sociedad y ética digital en inteligencia artificial
PPTX
La evolución e Historia de la computadora
PDF
1.1 ENPE.pdfdgggggggggggggggggggggdgggggggggggggggggg
PPTX
Del SIEM Tradicional al SOC del Futuro: La Evolución Inteligente
PPTX
proceso de la comunicación entre computadoras 21111.pptx
PDF
Reduciendo el Ciber Riesgo en Entornos Financieros
tecnología educativa, inicial, nivel básico y .pdf
Control total para proteger tus activos en base al riesgo
Desarrollo Seguro en un mundo multi-stack con Pruebas de Seguridad de Forma A...
Gtd Infraestructura Digital de Misión Critica
IMPORTANCIA EMPRESARIAL , TIPOS DE ESTRUCCTURAp.pptx
Gestión de la exposición, cómo anticiparse a los ciberataques
Planeaciónnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
Especificación Técnica - Cable TSCGEWOEU _ Feichun Cable Co., Ltd_.pdf
Cumplimiento de ISO 27002 Nubes Púb.pptx
Ventajas-de-Microsoft-365-Copilot-Infografia (1).pdf
Tipos de capacitores o condensadores .pdf
Ciberataques, Normativas y Protección: Ayudando a las Entidades Financieras a...
Ronmy Cañas Venezuela_ Tecnología e Inclusión Social.pdf
Más Allá del SOC Tradicional: IA y Automatización para Cumplimiento y Respues...
Sociedad y ética digital en inteligencia artificial
La evolución e Historia de la computadora
1.1 ENPE.pdfdgggggggggggggggggggggdgggggggggggggggggg
Del SIEM Tradicional al SOC del Futuro: La Evolución Inteligente
proceso de la comunicación entre computadoras 21111.pptx
Reduciendo el Ciber Riesgo en Entornos Financieros

Índice de libro: "Spring Boot & Angular: Desarrollo de WebApps Seguras. Tomo 2: Spring Boot"

  • 1. Índice 7 Índice Capítulo I Preliminar....................................................................................................13 1. Introducción................................................................................................................13 1.1 Aplicaciones Web................................................................................................................. 14 1.2 Viendo una Página Web....................................................................................................... 15 1.3 Seguridad............................................................................................................................. 16 1.4 Para quien va dirigido el Libro............................................................................................ 16 2. La Arquitectura de las Aplicaciones Web................................................................17 2.1 La Arquitectura de la Aplicación......................................................................................... 17 2.2 Patrón MVC......................................................................................................................... 18 2.3 Capas de la Aplicación......................................................................................................... 19 2.4 Aplicación WebShop............................................................................................................ 20 3. Servicios Web en Java................................................................................................21 3.1 Tipos de Servicios Web........................................................................................................ 22 Capítulo II Creación del Proyecto.................................................................................25 1. Configurar el Proyecto Java en Eclipse....................................................................25 1.1 Crear el Proyecto.................................................................................................................. 25 2. Definición del Modelo de Datos.................................................................................32 2.1 Bases de Datos..................................................................................................................... 32 2.2 Lenguajes de Acceso a Bases de Datos................................................................................ 33 2.3 Estructura de una Base de Datos.......................................................................................... 34 2.4 Modelo de Datos de WebShop............................................................................................. 34 2.5 Crear la Base de Datos de WebShop en MySQL................................................................. 37 Capítulo III Introducción a Spring.................................................................................41 1. Introducción a Spring................................................................................................41
  • 2. 8 Spring Boot & Angular: Desarrollo de WebApps Seguras - Tomo 2 1.1 Beneficios de usar el Framework Spring............................................................................. 41 1.2 Principio de Inversión de Dependencias.............................................................................. 42 1.3 Inversión de Control (IoC)................................................................................................... 44 2. Arquitectura................................................................................................................45 2.1 Core Container..................................................................................................................... 45 2.2 Acceso a Datos / Integración................................................................................................ 46 2.3 Web....................................................................................................................................... 46 2.4 Misceláneos.......................................................................................................................... 46 3. Contenedor IoC de Spring.........................................................................................47 3.1 Configurar el contexto de Spring......................................................................................... 48 4. Beans............................................................................................................................50 4.1 Ámbito del Bean.................................................................................................................. 51 4.2 Ciclo de Vida del Bean......................................................................................................... 53 5. Inyección de Dependencias........................................................................................54 5.1 Inyección de Dependencias Basada en Constructor............................................................. 56 5.2 Inyección de Dependencias Basada en Método Setter......................................................... 57 5.3 Inyección de Dependencias Basada en Campo.................................................................... 57 5.4 Errores típicos...................................................................................................................... 58 Capítulo IV Spring Boot..................................................................................................65 1. Introducción................................................................................................................65 2. Instalación...................................................................................................................66 2.1 Clase de Arranque de la Aplicación..................................................................................... 68 2.2 Archivo de configuración..................................................................................................... 69 3. Compilar el Proyecto..................................................................................................69 4. Ejecutando el Proyecto..............................................................................................73 5. Estructurar el código..................................................................................................76 Capítulo V Spring-REST...............................................................................................79 1. Introducción a los Servicios REST...........................................................................79 2. Recursos......................................................................................................................80 3. Reglas de la Arquitectura REST...............................................................................81 4. REST y HTTP.............................................................................................................82 5. Servicios Web RESTful..............................................................................................83
  • 3. Índice 9 6. Controlador REST en Spring....................................................................................84 6.1 Definir un método de acceso................................................................................................ 84 7. Crear nuestros primeros servicios web REST.........................................................86 7.1 Casos de Uso de la aplicación WebShop............................................................................. 86 7.2 Servicios web para las Categorías........................................................................................ 87 7.3 Servicios web para los Libros.............................................................................................. 94 7.4 Servicios web para la gestión del Carrito de la Compra.................................................... 101 7.5 Servicios web para la gestión de Pedidos.......................................................................... 110 Capítulo VI Introducción a JPA....................................................................................121 1. Introducción..............................................................................................................121 2. ORM..........................................................................................................................122 3. JPA.............................................................................................................................123 3.1 Arquitectura JPA................................................................................................................. 125 3.2 Entidades............................................................................................................................ 125 3.3 Ciclo de Vida...................................................................................................................... 128 3.4 Relaciones.......................................................................................................................... 128 Capítulo VII Spring Data................................................................................................141 1. Introducción..............................................................................................................141 2. Spring Data JPA.......................................................................................................142 2.1 Introducción a los repositorios de Spring Data.................................................................. 143 3. Caso Práctico: Implementar la capa de Acceso a Datos en WebShop.................144 3.1 Configuración del proyecto................................................................................................ 145 3.2 Creación de las Entidades.................................................................................................. 147 3.3 Repositorios JPA................................................................................................................ 154 3.4 Caso práctico: Creación de las clases de Acceso a Datos.................................................. 159 4. Probar los Servicios Web ........................................................................................175 Capítulo VIII Autenticación y Autorización...................................................................179 1. Concepto de autenticación y autorización.............................................................179 2. Autenticación en el lado del Servidor.....................................................................181 2.1 HTTP Basic........................................................................................................................ 181 2.2 Autenticación basada en Cookies....................................................................................... 181 2.3 Autenticación basada en Tokens........................................................................................ 183
  • 4. 10 Spring Boot & Angular: Desarrollo de WebApps Seguras - Tomo 2 3. JSON Web Tokens (JWT)........................................................................................183 3.1 ¿Qué es un Token?............................................................................................................. 183 3.2 ¿Qué son los JSON Web Tokens?...................................................................................... 184 3.3 ¿Cómo se utiliza los JSON Web Tokens?.......................................................................... 184 3.4 Ciclo de Vida de un JWT................................................................................................... 185 Capítulo IX Configurar la Autenticación en WebShop..............................................187 1. Capa de Datos...........................................................................................................187 1.1 Modelo de Datos................................................................................................................ 188 1.2 Scripts SQL........................................................................................................................ 189 2. Back-End...................................................................................................................190 2.1 Configurar el proyecto para incluir Spring Security y JWT.............................................. 192 2.2 Configurar el Repositorio de Datos.................................................................................... 193 2.3 Crear un Servicio para autentificar los usuarios................................................................. 195 2.4 Configurar el JSON Web Token......................................................................................... 197 2.5 JWTAuthorizationFilter..................................................................................................... 199 2.6 Crear la clase de configuración de Spring Security........................................................... 201 2.7 Controlador para añadir un usuario.................................................................................... 205 3. Front-End..................................................................................................................206 3.1 Servicio de Autenticación.................................................................................................. 206 3.2 Crear el componente de Login........................................................................................... 209 3.3 Crear un guarda para proteger las rutas en Angular........................................................... 213 3.4 Modificar las Rutas para proteger el módulo de Administración....................................... 215 3.5 Añadir el enlace para cerrar sesión..................................................................................... 217 3.6 Modificar los servicios Ajax protegidos para incluir el token JWT................................... 218 Capítulo X Instalar HTTPS en el Servidor................................................................221 1. Obtener un certificado SSL.....................................................................................223 2. Habilitar HTTPS en Spring Boot............................................................................225 3. Redireccionar HTTP a HTTPS...............................................................................227 Capítulo XI SQL Injection............................................................................................231 1. Acerca de SQL Injection..........................................................................................231 2. Validación de los datos de entrada de la API REST..............................................233 2.1 Manejo de Excepciones..................................................................................................... 234
  • 5. Índice 11 2.2 Usando @ControllerAdvice............................................................................................... 235 2.3 Implementar el ControllerAdvice...................................................................................... 235 2.4 Validación........................................................................................................................... 237 Capítulo XII Cross-Site Request Forgery.....................................................................249 1. Introducción al CSRF..............................................................................................249 2. Consejos para evitar el CSRF.................................................................................251 3. Tokens para combatir el CSRF...............................................................................251 4. Same Site Cookies.....................................................................................................252 5. Caso de Uso de WebShop.........................................................................................252 6. ¿Qué pasa si no se usa Token JWT?.......................................................................254 Capítulo XIII Cross Site Scripting (XSS)........................................................................255 1. ¿Cómo se inyecta el JavaScript malicioso?............................................................255 2. ¿Por qué es malicioso JavaScript?..........................................................................256 3. Actores en un ataque XSS........................................................................................256 3.1 Un ejemplo de un escenario de ataque............................................................................... 257 3.2 Ataque XSS Reflejado........................................................................................................ 258 3.3 Ataque XSS Basado en DOM............................................................................................ 259 4. ¿Cómo prevenir el ataque XSS?.............................................................................260 5. ¿Cómo evitar el ataque XSS desde Angular?........................................................263 5.1 Modelo de seguridad XSS de Angular............................................................................... 264 5.2 Sanitización y contextos de Seguridad............................................................................... 264 5.3 Evitar el uso directo de la API de DOM............................................................................ 265 6. Política de Seguridad de Contenido........................................................................266 6.1 Aplicación a WebShop....................................................................................................... 267 Capítulo XIV Despliegue de la Aplicación en Producción............................................269 1. Introducción..............................................................................................................269 2. Integrar el Front-End...............................................................................................269 2.1 Crear el módulo para el Front-End: WebShopWeb............................................................ 270 2.2 Configurar el plugin para compilar el Front-End............................................................... 272 2.3 Configurar el proyecto WebShopServer............................................................................. 274
  • 6. 12 Spring Boot & Angular: Desarrollo de WebApps Seguras - Tomo 2 3. Habilitar el control de las rutas en el Back-End....................................................276 3.1 Integrar las URLs de Angular con Spring Security............................................................ 277 4. Generar el binario del servidor...............................................................................278 4.1 Configuración de perfiles................................................................................................... 278 4.2 Generación del ejecutable.................................................................................................. 279 4.3 Ejecución de la aplicación web.......................................................................................... 279 4.4 Depuración de la aplicación web....................................................................................... 279 Apéndice Instalación del Software Requerido........................................................281 1. Instalar el Kit de Desarrollo de Java......................................................................281 2. Instalar Maven..........................................................................................................282 3. Instalar Eclipse.........................................................................................................284 3.1 Configurar el JRE en Eclipse............................................................................................. 284 3.2 Configurar Maven en Eclipse............................................................................................. 286 4. Instalar MySQL........................................................................................................287 5. Instalar NodeJS........................................................................................................291 6. Instalar Visual Studio Code.....................................................................................291 7. Instalación y Uso de Postman..................................................................................291 7.1 Instalación de Postman....................................................................................................... 292 7.2 Uso de Postman.................................................................................................................. 293 7.3 Interfaz de Usuario de Postman......................................................................................... 294 7.4 Ejemplo de ejecución de un servicio web.......................................................................... 296 7.5 Ejemplo de ejecución de un servicio web con parámetros en la URL............................... 297 7.6 Ejemplo de ejecución de un servicio web con parámetros en el Body.............................. 298 Índice alfabético........................................................................................301 Índice de imágenes y tablas......................................................................305