【问题标题】:Anonymous Access to a REST API?匿名访问 REST API?
【发布时间】:2017-09-28 01:08:38
【问题描述】:

REST API 通常通过请求的 Authorization 标头中的 API 令牌进行访问。如果用户有一个帐户,他们可以简单地获得一个与他们的帐户相关联的令牌。然后可以在此基础上应用速率限制。

但是,在某些情况下,没有帐户的用户可能需要访问 REST API。想象一下,例如,一个公共新闻网站,其文章应该可供有帐户和没有帐户的用户阅读。在这种情况下,应该如何访问 REST API,并应用速率限制?

我的直接想法是匿名客户端可以访问POST /api/register/anonymous 之类的资源,并被授予一个 API 令牌,该令牌适用于具有有限权限的匿名用户。资源本身可以基于 IP 地址进行速率限制。但是,这无疑有其局限性,例如 IP 地址的不可靠性。

对此事的任何想法将不胜感激。

【问题讨论】:

    标签: rest authentication authorization api-design rate-limiting


    【解决方案1】:

    我很想被证明是错误的,但我不明白您如何有效地限制匿名访问。如果您提供匿名令牌,攻击者可以在旧令牌达到限制时请求新令牌。如果您通过 IP 地址进行限制,他们可以进行欺骗。如果您只是想阻止随机的互联网用户,一个或两个都可以。如果您担心专门的攻击者,那只是减速带。在请求匿名访问令牌时添加验证码也会减少攻击面。

    【讨论】:

    • 类似的想法掠过我的脑海。看看项目如何处理这个问题会很有趣,因为它似乎经常发生。
    • 这取决于“有效”的定义是什么。向匿名用户公开某些内容通常会保留所需的控制权,为匿名设置令牌发行是管理该访问的良好第一步。然后可能值得考虑确保访问已识别的令牌,以其他方式获得。如果您只是对匿名令牌的有限发行进行评级,并允许通过其他方式获得的已识别令牌访问资源,那么至少坏演员的爆炸半径会减少。为了限制滥用匿名令牌发行,您可以添加一层设备识别作为缓解措施。
    猜你喜欢
    • 2016-08-10
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    相关资源
    最近更新 更多