在 AWS Gateway (REST API) 中添加 HTTP 严格传输安全 (HSTS)

Han*_*dla 9 amazon-web-services hsts aws-api-gateway

我们的安全团队希望 AWS 上的所有 Rest API 都设置 HTTP 严格传输安全 (HSTS) 标头,即使我们的 api 不是从任何网页调用的。

我发现了一些在 Lambda 响应中设置响应标头的用例,但我们的大多数 api 都链接到 SQS 或 SNS。所以我不确定如何在 AWS API GW 中添加此响应标头。

谁能指导我这件事。

Han*_*dla 9

我找到了添加严格传输安全 (HSTS) 响应标头的解决方案。我已经通过 AWS 控制台完成了此操作。

步骤 1:在方法响应状态代码下添加Strict-Transport-Security标头。

在此输入图像描述

步骤 2:Integration Response下,为 HSTS 标头添加必要的映射值。附件是我尝试过的示例。这些值必须用单引号 ( ' ) 提供。 在此输入图像描述

第 3 步:在securityheaders.com网站上验证相同内容。 在此输入图像描述

  • 对于代理集成有什么建议吗?步骤 2 中的错误消息是:代理集成无法配置为转换响应。 (4认同)
  • @BryanStump 对于代理集成,您必须在程序响应中传递标头,而不是在 API 网关中设置它。在您的响应负载中添加 headers 键来设置这些。下面是我的 lambda 响应示例。{ "statusCode": "200", "headers": { "content-type": "application/json", "Strict-Transport-Security" : "max-age=63072000; includeSubDomains; 预加载" } "body": "", "isBase64Encoded": "假" } (4认同)

H6.*_*H6. 5

使用 Cloudformation 设置此值时,请x-amazon-apigateway-integration注意将这些标头值放入双引号之间的单引号中.. ( "'my value here'")

例如

responses:
  '200':
    description: 200 response for stackoverflow
    headers:
      Content-Length:
        type: string
      Timestamp:
        type: string
      Content-Type:
        type: string
      Strict-Transport-Security:
        type: string
Run Code Online (Sandbox Code Playgroud)

...

x-amazon-apigateway-integration:
  responses:
    '200':
      statusCode: '200'
      responseParameters:
        method.response.header.Strict-Transport-Security: "'max-age=31536000'"
Run Code Online (Sandbox Code Playgroud)