Conceptos generales de seguridad
Por qu茅 Ciberseguridad para Desarrollo Web
No estamos seguros
Autorizaci贸n Autenticaci贸n y Accountability : AAA
Funciona en mi local
Empecemos por la l贸gica
SQL Injection
De local a producci贸n
Introducci贸n a DevSecOps
DevSecOps como cultura
Creando pipelines
Corriendo nuestras pruebas
Listas de control de privilegios
Seguridad en la arquitectura
Dise帽ando la arquitectura
Infraestructura como c贸digo
Creando la infraestructura
Creando roles y policies
Desplegando funciones lambda
El mundo de la Base de Datos
Conectando lambdas a una VPC
Single point of failure
Evitando vulnerabilidades en el c贸digo
Configurando Auth0
Creando un lambda Authorizer
Secretos y API Keys
Creando Endpoints
Evitando Cross Site Scripting o XSS
Validando la integridad de los datos con tokens
Controles de seguridad sobre datos
Conociendo la naturaleza de los datos
Protege tus datos con Key Management Services
Monitoring y alertas
Sistema de logs
Observabilidad
Alertas y Postmortems
CORS y cierre
Errores de CORS
No tienes acceso a esta clase
隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera
El Cross-Site Scripting (XSS) es una vulnerabilidad web que permite a los atacantes inyectar c贸digo malicioso en aplicaciones web, aprovech谩ndose de las entradas disponibles en el c贸digo. Este tipo de ataque es preocupante ya que el c贸digo inyectado puede realizar acciones maliciosas, como el robo de cookies o el acceso a cuentas de usuario. Aunque se ve m谩s reflejado en c贸digo JavaScript, puede ocurrir en m煤ltiples lenguajes de programaci贸n.
Validaci贸n de Entradas: Es fundamental validar las entradas que recibe tu aplicaci贸n. Aseg煤rate de que cumplan con el formato esperado, por ejemplo, usando JSON en tus payloads.
Authorizers para Webhooks: Aseg煤rate de que las solicitudes al API provienen de fuentes leg铆timas. En el contexto del uso de GitHub, es importante verificar que los webhooks provengan realmente de GitHub.
Un webhook permite que GitHub se comunique con tu aplicaci贸n cuando ocurren eventos espec铆ficos, como un push. Configurarlo correctamente es esencial para asegurar que la comunicaci贸n sea segura.
Configuraci贸n del Endpoint Real: Se debe actualizar el endpoint del webhook en GitHub para que apunte a tu API Gateway y no a un entorno temporal como Ngrok.
Pruebas y Confirmaci贸n: Realiza un commit en GitHub para activar el webhook y verifica en la consola de GitHub y en tu API que la informaci贸n fue recibida correctamente.
Para validar que un webhook proviene de GitHub, se puede usar un authorizer. Aqu铆 te describo los pasos para ajustar el authorizer:
user agent
y verifica que contenga el prefijo GitHub-Hookshot
.Una vez configurado el authorizer, el pr贸ximo paso es examinar la solicitud usando CloudWatch Logs para comprobar la informaci贸n de identidad. Esto asegura que los webhooks vienen de GitHub.
Extracci贸n de Datos: Desde el lambda
de Authorizer, se extrae el user agent
del header y se valida que tenga el prefijo correcto.
const githubUserAgentPrefix = "GitHub-Hookshot";
const userAgentHeader = headers["user-agent"];
Interacci贸n con la Base de Datos: Configurar las lambda
para manejar completar solicitudes hacia la base de datos, reflejando las operaciones realizadas en cada evento.
make publish
para compilar y publicar los lambdas actualizados.Terraform plan
y Terraform apply
para desplegar los cambios en la infraestructura.Con todo configurado, realiza un SELECT
en tu base de datos para confirmar que el webhook se insert贸 adecuadamente.
La validaci贸n de webhooks es esencial para proteger servicios que interact煤an en tiempo real con plataformas externas, como GitHub. El uso de headers apropiados, como user-agent
, es una t茅cnica eficaz. Pero, 驴qu茅 ocurre si un atacante cambia el header de user-agent
? Este es un escenario que se debe tener en cuenta y que abordaremos en nuestra pr贸xima clase. 隆Sigue aprendiendo y fortaleciendo tus conocimientos sobre seguridad!
Aportes 1
Preguntas 0
驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?