【问题标题】:What are the security implications of using CORS with AWS API Gateway?将 CORS 与 AWS API Gateway 结合使用有哪些安全隐患?
【发布时间】:2016-01-31 04:31:31
【问题描述】:

我看到另一个关于将 CORS 与 Access-Control-Allow-Origin 一起使用的问题:* 最大的担忧是跨站点请求伪造攻击。

我想知道将它与 AWS API Gateway 一起使用时是否存在同样的问题。

API 网关的 CORS documentation 没有提到 CORS 的任何缺点。

但是,S3 CORS documentation 显示 Access-Control-Allow-Origin: * 仅与 GET 一起使用,但指定了 PUT、POST 和 DELETE 的来源。

对于我的特定用例,我想做 api 网关文档所说的:使用 JavaScript 客户端调用部署在不同域上的 API(即 my-api-id.execute-api.region-id.amazonaws。 com/测试)。我为每个请求传递一个 api-key。

在 GET、POST、PUT、DELETE 上使用 Access-Control-Allow-Origin: * 是否安全?

【问题讨论】:

    标签: javascript security amazon-web-services aws-api-gateway


    【解决方案1】:

    无论您是否使用 AWS API Gateway,CORS 都会影响安全性和浏览器支持

    出于安全考虑,对这个 StackOverflow 问题有一个很好的解释:Does CORS and XSS have any connection?

    请注意,如果您的 API 不是公开的,则不必将 Access-Control-Allow-Origin 设置为“*”。您可以将特定域列入白名单。

    在撰写本文时,这些主要浏览器版本完全支持 CORS:

    • Chrome 自 31 岁起
    • iOS Safari 8.5 起
    • Android 浏览器自 4.4 起
    • 自 11 年以来的 IE
    • 火狐41
    • 自 8 年以来的 Safari

    有关部分支持的完整详细信息和信息,请参阅http://caniuse.com/#feat=cors

    【讨论】:

      【解决方案2】:

      您需要考虑一些事情来确定 Access-Control-Allow-Origin: * 是否适合您。

      1. 您的身份验证机制:如果您使用 cookie 进行身份验证,那么 * 将不起作用,因为在使用通配符时浏览器将允许传递凭据(cookie)。如果您使用的是基于 Authorization 标头的方法,这应该不是问题。

      2. 您是否需要允许从任何域提供的 javascript 来调用您的 API。如果您正在设计某种公共 Web api,您希望从其他站点调用页面提供服务,那么无论如何您都需要通配符。如果您只计划使用自己的客户端代码调用 api,那么最安全的做法是使用更多的特定于主机的值。因此,如果您从 myapp.example.com 提供 html 和 js,则设置 Access-Control-Allow-Origin 的值:myapp.example.com。如果您需要提供来自多个域的 html 和 js,但仍不想向世界开放,您将必须运行一些代码来读取传入的 Origin: header 和 echo back allowed 在 Access 中的那些-Control-Allow-Origin 选项以及 GET、POST、PUT、DELETE 的响应标头。

      我建议您在 API Gateway 上创建一个简单的原型资源和方法,然后尝试从您自己的域提供的一些 html/js 调用该 API。

      这里有一些更相关的 SO 问题:

      CORS: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true

      Access-Control-Allow-Origin wildcard subdomains, ports and protocols

      Access-Control-Allow-Origin Multiple Origin Domains?

      【讨论】:

        猜你喜欢
        • 2021-05-17
        • 2021-05-21
        • 2018-02-16
        • 2020-06-12
        • 2020-08-30
        • 2023-03-05
        • 2019-01-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多