通过这种方法查看任何安全风险?

时间:2012-09-18 01:57:35

标签: security authentication

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

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

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

我的开放性问题是: 1)有没有人看到这个主要的安全问题? 2)我有什么理由让客户代币随着时间的推移而过期或改变?现在我给每个用户分配一个随机的。如果用户注销或忘记密码,我会生成一个新密码。

我很想知道每个人对这种方法的看法。我不打算进行创新,我只是让我意识到这种方法存在的风险。

1 个答案:

答案 0 :(得分:3)

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

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