No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Evitando Cross Site Scripting o XSS

23/30
Recursos

驴Qu茅 es el Cross-Site Scripting (XSS) y cu谩l es su impacto?

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.

驴C贸mo se protege el c贸digo contra XSS?

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

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

驴C贸mo configurar un webhook de GitHub de manera segura?

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.

驴C贸mo se direcciona el webhook al API endpoint?

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

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

驴C贸mo validar que un webhook viene de GitHub?

Para validar que un webhook proviene de GitHub, se puede usar un authorizer. Aqu铆 te describo los pasos para ajustar el authorizer:

  • Configuration del Authorizer: En el API Gateway, adjunta un authorizer a tu endpoint de post de commit.
  • Revisar el User Agent: Ajusta el header a user agent y verifica que contenga el prefijo GitHub-Hookshot.

Implementaci贸n t茅cnica y manejo de datos

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.

Manejo del C贸digo

  1. 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"];
    
  2. 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.

Deployment y pruebas finales

  1. Compilaci贸n de Lambdas: Usa comandos como make publish para compilar y publicar los lambdas actualizados.
  2. Implementaci贸n con Terraform: Realiza un Terraform plan y Terraform apply para desplegar los cambios en la infraestructura.

Verificaci贸n en la base de datos

Con todo configurado, realiza un SELECT en tu base de datos para confirmar que el webhook se insert贸 adecuadamente.

Reflexiones finales

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

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

## Evitando Cross Site Scripting o XSS En esta vulnerabilidad el atacante se aprovecha de las entradas del c贸digo para poder inyectar c贸digo malicioso con el que se puede robar cookies, acceder a las cuentas, entre otros, se ve mejor reflejado en javascript pero puede ocurrir en cualquier lenguaje.