应该首先验证哪些令牌或参数



想象一下,我的应用程序中有两条路由:

  • POST /login -> {token: some_token}
    用于身份验证的路由,该路由返回用于访问第二功能的令牌

  • POST /divide -> {result: x / y}
    模拟函数divide(x: int, y: int)的路由,该路由由来自第一路由的令牌承载保护。此外,在这个函数中,我有一些验证器,即xy必须是整数,y必须不等于0,如果其中一个条件未通过,它将返回400:BadRequest

所以,我的问题是,如果用户没有提供路由/divide的令牌承载和参数,我应该返回401还是400?

有两件事让我担心

  • 返回400:用户可以通过发送必须提供空体和解析响应,如send空体和get{x:,y:必须提供},然后发送x=abc,y=bca并获取{x:必须是整数,y: 必须是integer}等
  • return 401:用户可以通过发送大量的随机令牌,因此对于每个请求,应用程序都应该检查存储令牌是否有效

在这种情况下,最佳做法是什么?

谢谢。

未经授权,您不得处理任何其他内容。否则,为什么要进行身份验证/授权?如果你在用户未经授权的情况下处理内容,你基本上就有了安全漏洞。显然,对于示例函数来说,这似乎不是什么大问题,但这就是它的要点

所以你应该退回401。

如果DDoS问题无法通过不同顺序的处理来解决,您仍然需要检查所有令牌。即使你没有,也有人可以拒绝你的服务/API。还有其他(API管理(解决方案,如节流、白名单、费率限制等。

这看起来像是"意见"问题,但我会回答。您需要返回401,因为授权是您应该做的第一件事。只有当用户可以访问资源时,我们才能继续处理。

相关内容

  • 没有找到相关文章

最新更新