【问题标题】:Making API only available for a specific web-application使 API 仅可用于特定的 Web 应用程序
【发布时间】:2018-07-15 04:23:26
【问题描述】:

让我们想象以下场景:调用 API 的网络应用。 由于可以在网络浏览器中访问网络应用程序代码,我们可以说任何人都可以复制其代码并开始调用我们的 API,但我们无法检测它是否来自我们的网络应用程序。

如何预防?

【问题讨论】:

    标签: api security web-applications


    【解决方案1】:

    非公共 REST 服务必须在每个 API 端点执行访问控制。单体应用程序中的 Web 服务通过用户身份验证、授权逻辑和会话管理来实现这一点。对于按照 RESTful 风格组成多个微服务的现代架构,这有几个缺点。

    • 为了最大限度地减少延迟并减少服务之间的耦合,访问控制决策应由 REST 端点在本地做出
    • 用户身份验证应集中在颁发访问令牌的身份提供者 (IdP) 中

    您也可以使用 API 密钥。 API 密钥可以减少拒绝服务攻击的影响。但是,当它们被发布给第三方客户端时,它们相对容易被破解(如果您不打算这样做,那么密钥劫持应该不会有任何问题)。

    • 对受保护端点的每个请求都需要 API 密钥。
    • 如果请求来得太快,则返回 429“Too Many Requests”HTTP 响应代码。
    • 如果客户端违反使用协议,则撤销 API 密钥。
    • 不要完全依赖 API 密钥来保护敏感、关键或高价值资源。

    您可以在 OWASP's official article 上阅读更多良好的安全实践。

    我希望这会有所帮助。

    【讨论】:

    • API密钥可以在客户端被截获,攻击者可以轻松重播消息。
    猜你喜欢
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多