Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

568
Vistas
¿Cómo agregar encabezados a la respuesta de CloudFront?

Pruebo mi sitio web usando https://observatory.mozilla.org/analyze y obtuve una calificación F.

Las razones son:

 Content Security Policy (CSP) header not implemented X-XSS-Protection header not implemented X-Frame-Options (XFO) header not implemented ...

Sirvo mi sitio web usando CloudFront.

¿Dónde pongo esos encabezados que faltan en CloudFront?

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Actualización 23 junio 2021

Acabo de descubrir que si bien la solución a continuación parece excelente, puede que no sea lo suficientemente buena, especialmente para agregar encabezados de seguridad porque si Cloudfront recibe un error desde el origen, la función no se invocará.

Códigos de estado HTTP CloudFront no invoca funciones perimetrales para eventos de respuesta del espectador cuando el origen devuelve el código de estado HTTP 400 o superior.

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/edge-functions-restrictions.html


A partir de mayo de 2021, parece que la mejor opción serían las funciones de Cloudfront recientemente introducidas, que tienen un precio de 1/6 del precio de Lambda@Edge según esta entrada de blog https://aws.amazon.com/blogs/aws/introducing -cloudfront-functions-ejecuta-tu-código-en-el-borde-con-baja-latencia-a-cualquier-escala/

Un ejemplo de la documentación en https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/example-function-add-security-headers.html

 function handler(event) { var response = event.response; var headers = response.headers; // Set HTTP security headers // Since JavaScript doesn't allow for hyphens in variable names, we use the dict["key"] notation headers['strict-transport-security'] = { value: 'max-age=63072000; includeSubdomains; preload'}; headers['content-security-policy'] = { value: "default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'"}; headers['x-content-type-options'] = { value: 'nosniff'}; headers['x-frame-options'] = {value: 'DENY'}; headers['x-xss-protection'] = {value: '1; mode=block'}; // Return the response to viewers return response; }
over 4 years ago · Santiago Trujillo Denunciar

0

Si está implementando esto ahora, entonces está de suerte. Es mucho más simple a partir de noviembre de 2021. Amazon ha agregado un encabezado de seguridad de forma nativa a través de políticas de encabezado de respuesta, es decir, no tenemos que crear un lambda solo para agregar encabezados de respuesta a la aplicación. Detalles https://aws.amazon.com/blogs/networking-and-content-delivery/amazon-cloudfront-introduces-response-headers-policies/ .

El proveedor de Terraform AWS comenzó a admitir aws_cloudfront_response_headers_policy desde 3.64.0 https://github.com/hashicorp/terraform-provider-aws/blob/main/CHANGELOG.md#3640-november-04-2021 .

Este es un ejemplo para agregar encabezados de seguridad a la respuesta de aws cloudfront a través del proveedor terraform aws.

 resource "aws_cloudfront_response_headers_policy" "security_headers_policy" { name = "my-security-headers-policy" security_headers_config { content_type_options { override = true } frame_options { frame_option = "DENY" override = true } referrer_policy { referrer_policy = "same-origin" override = true } xss_protection { mode_block = true protection = true override = true } strict_transport_security { access_control_max_age_sec = "31536000" include_subdomains = true preload = true override = true } content_security_policy { content_security_policy = "frame-ancestors 'none'; default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'" override = true } } }
over 4 years ago · Santiago Trujillo Denunciar

0

Recomendaría usar Lambda@Edge para agregar cualquier encabezado que esté buscando a su respuesta de origen antes de que se devuelva al espectador.

Se puede hacer de manera tan simple como el siguiente ejemplo cuando se agrega como un evento de respuesta de origen.

 import json def lambda_handler(event, context): response = event["Records"][0]["cf"]["response"] headers = response["headers"] headers['strict-transport-security'] = [{key: 'Strict-Transport-Security', value: 'max-age=63072000; includeSubdomains; preload'}]; headers['content-security-policy'] = [{key: 'Content-Security-Policy', value: "default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'"}]; headers['x-content-type-options'] = [{key: 'X-Content-Type-Options', value: 'nosniff'}]; headers['x-frame-options'] = [{key: 'X-Frame-Options', value: 'DENY'}]; headers['x-xss-protection'] = [{key: 'X-XSS-Protection', value: '1; mode=block'}]; headers['referrer-policy'] = [{key: 'Referrer-Policy', value: 'same-origin'}]; response['headers'] = headers return response

Para obtener más información, consulte la publicación de blog Adición de encabezados de seguridad HTTP mediante Lambda@Edge y Amazon CloudFront .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda