Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

571
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda