查看此方法的任何安全风险



我正在开发具有以下身份验证风格的 RESTful(ish) API:

  • 客户端调用"身份验证"API 方法,并通过 HTTPS POST 传递用户名和密码。 此方法返回基本帐户信息和"客户端令牌",该令牌存储在数据库中的用户帐户上。

  • 所有进一步的 API 调用(全部通过 HTTPS POST)都需要客户端令牌。 如果系统无法通过客户端令牌找到请求者,则调用将被拒绝。

我的开放问题是:1)有人认为这有重大的安全问题吗?2) 我有什么充分的理由让客户端令牌随着时间的推移而过期或更改? 现在我为每个用户分配一个随机的。 如果用户注销或忘记密码,我会生成一个新密码。

我很想知道大家对这种方法的看法。 我不追求创新,我只是让我意识到这种方法的风险。

你所描述的内容在功能上等同于会话cookie,只是在你的应用程序中重新实现,因此受到许多陷阱的影响,这些陷阱可能已经被大多数Web框架处理过。

  • 确保您的代币有足够的熵位。 如果令牌是简单的 32 位整数,那么疯狂的猜测可能足以击中其他人正在使用的标记。
  • 如果要随机生成这些令牌,请确保使用加密强度高的随机数源,否则下一个令牌可能会根据以前的令牌进行猜测。
  • 如果这些POST请求来自脚本,并且这些请求嵌入在网页中,则将令牌作为显式参数传递,而不是作为声明securehttponly的cookie传递,使跨站点脚本的令牌窃取变得更加容易。

相关内容

最新更新