【问题标题】:AWS API Gateway API Key vs CorsAWS API Gateway API 密钥与 Cors
【发布时间】:2019-01-07 05:21:03
【问题描述】:

我正在使用 AWS 实现 API 网关。

如果资源需要 API 密钥,我是否需要在资源上启用 CORS?启用 CORS 是否为我提供了 API 密钥要求没有的额外安全层?

或者是否需要 API 密钥来调用 API 网关会使 CORS 变得多余,因为即使发出来自另一个来源的请求 - 该来源也没有 API 密钥。

【问题讨论】:

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


    【解决方案1】:

    首先是 CORS 和 API Key 功能有不同的原因。

    API 密钥 - 启用 API 密钥后,每个消费者都需要发送 API 密钥及其请求。这基本上是为了监控使用情况并限制来自个人消费者的请求。

    CORS - 这基本上是三个授予现代浏览器直接访问用于 B2C 集成的 API。如果为特定域配置了 CORS,则仅允许托管在特定域中的网站直接从客户端访问 API(使用 JavaScript 和 AJAX)。但是,这可能不适用于 API 的 B2B 集成,即使没有配置 CORS,也可以从后端访问 API。

    是否需要 API 密钥来调用 API 网关会使 CORS 变得多余,因为即使发出来自另一个来源的请求 - 该来源也没有 API 密钥。

    是的,如果启用 API 密钥,每个源在访问 API 时都必须有一个 API 密钥。但是,CORS 解决了一个不同的问题,即 Web 浏览器强制执行策略以限制仅从白名单域访问 API(否则人们将能够将 API 调用从不同的网站发送到 API,只需添加脚本和 URL将重载 API)。

    【讨论】:

    • 从不同网站发送 API 调用的人虽然没有 API 密钥 - 它仍然会使 API 过载吗?因没有正确的 API 密钥而被 API 拒绝与因未通过 CORS 验证而被拒绝之间有区别吗?
    • @Ogen API Keys 在服务器端(在 gw 上)验证,而 CORS 标头授权用户的 Web 浏览器进行跨站点调用(标头只是由 API gw 返回,未验证,它们与 API gw 安全性无关)。 API 密钥用于服务器-服务器通信,请勿在用户浏览器中使用它们(很容易收集它们)
    猜你喜欢
    • 2020-09-25
    • 2017-05-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 2017-09-19
    • 1970-01-01
    • 2020-10-05
    相关资源
    最近更新 更多