Creación de repositorios seguros y prevención de SQL Injection
Clase 5 de 30 • Curso de Ciberseguridad para Desarrollo Web
Contenido del curso
- 11

Integración de GitHub Webhooks y AWS para Gestión de Commits
02:24 - 12

Gestión de Infraestructura como Código con Terraform en AWS
09:34 - 13

Infraestructura como Código con Terraform y Makefiles
17:44 - 14

Automatización de Infraestructura con Terraform: Roles y Políticas en AWS
06:03 - 15

Implementación de buckets y funciones Lambda con Terraform y AWS S3
16:44 - 16

Configuración de Bases de Datos en AWS con VPC y Seguridad IP
14:10 - 17

Configuración de Lambdas en VPC usando Terraform
12:29 - 18

Configuración de API Gateway para Lambdas en AWS
05:42
- 19

Configuración de Autenticación con Auth0 en Aplicaciones Web
07:14 - 20

Implementación de Authorizer con Auth0 en AWS Lambda
16:56 - 21

Conexión y Configuración de Lambda con AWS y Postgres
13:35 - 22

Configuración de Endpoints y Políticas en AWS con Terraform
11:27 - 23

Validación de Webhooks desde GitHub usando User Agent
12:08 - 24

Validación de Webhooks de GitHub con AWS Secrets Manager
14:32
¿Cómo guardar datos de un webhook en una base de datos?
En el mundo del desarrollo de software, interactuar de manera segura y eficiente con bases de datos es fundamental. Hoy nos enfocamos en la integración de webhooks y cómo almacenar estos datos en un sistema sin comprometer la seguridad de nuestra aplicación. ¡Acompáñame para aprender más sobre el manejo de datos entrantes a través de webhooks y cómo prevenir inyecciones SQL!
¿Cómo estructurar los datos de un webhook?
Primero, es esencial definir una estructura que pueda manejar los datos del webhook de forma eficaz. En este caso, utilizamos Google Gemini para generar una estructura en Go que simplifica el mapeo del JSON recibido. Aquí te mostramos los pasos:
- Crear un paquete
models: Aquí definimos el archivo donde el JSON del webhook será descompuesto. - Utilizar Google Gemini: Con la ayuda de Gemini, generamos una estructura de Go a partir del JSON del payload del webhook para manejar solo la información esencial.
Durante este proceso, simplificamos la estructura al centrarnos únicamente en el head commit e información sobre el repositorio, dejando de lado detalles innecesarios.
¿Cómo prevenir inyecciones SQL?
Prevenir inyecciones SQL es vital para mantener la seguridad de la base de datos. A continuación, te explicamos cómo evitar este tipo de vulnerabilidades utilizando placeholders:
- No concatenar strings directamente: Este es uno de los errores más comunes que conllevan a inyecciones SQL. Al concatenar strings, aumentas el riesgo de que comandos maliciosos se ejecuten.
- Usar placeholders: Estas permiten especificar en las consultas que ciertos campos son strings, cerrando la puerta a potenciales inyecciones de código.
Con los placeholders, aun si alguien intenta inyectar SQL a través de un valor (como ; DELETE FROM users;), este será tratado como un string literal sin ejecutarse como SQL.
¿Cómo implementar un repositorio seguro en Go?
La correcta implementación de un repositorio es clave para insertar y recuperar información sin riesgos. A continuación se presentan los pasos básicos:
- Definir una interfaz segura: Creamos una interfaz
commitscon métodos esenciales comoinsertyget commit by author email. - Implementar métodos de inserción seguros: Utilizamos placeholders para inserción de datos, asegurando que cualquier valor se introduzca de manera segura:
insert := `INSERT INTO commits (id, repository, message, author_email) VALUES (?, ?, ?, ?)` - Recuperar datos con filtros seguros: Igualmente, al recuperar datos, hacemos uso de filtros seguros por medio de placeholders, asegurando que nuestra aplicación maneje solo datos válidos y seguros.
¿Cómo ayudar a un engineering manager con registros de commits?
Con la correcta implementación de estas técnicas, puedes proporcionar a un engineering manager la capacidad de analizar y supervisar eficazmente el historial de commits de un desarrollador específico, permitiendo un seguimiento detallado sin sacrificar la seguridad del sistema.
Siempre recuerda, en el desarrollo, la seguridad debe ser una prioridad. ¡No dejes de aprender y mejorar tus habilidades para proteger tus aplicaciones y datos estratégicos!