我正在研究具有以下身份验证风格的RESTful(ish)API:
客户端调用“authenticate”API方法并通过HTTPS POST传递用户名和密码。此方法返回基本帐户信息和“客户端令牌”,该客户端令牌存储在数据库中的用户帐户中。
所有进一步的API调用(遍及HTTPS POST)都需要客户端令牌。如果系统无法通过客户端令牌找到请求者,则拒绝该呼叫。
我的开放性问题是: 1)有没有人看到这个主要的安全问题? 2)我有什么理由让客户代币随着时间的推移而过期或改变?现在我给每个用户分配一个随机的。如果用户注销或忘记密码,我会生成一个新密码。
我很想知道每个人对这种方法的看法。我不打算进行创新,我只是让我意识到这种方法存在的风险。
答案 0 :(得分:3)
您所描述的内容在功能上等同于会话cookie,仅在您的应用程序中重新实现,因此会受到大多数Web框架可能已经处理过的许多陷阱的影响。
POST
请求来自脚本并且嵌入在网页中,则将令牌作为显式参数而不是声明为secure
和httponly
的cookie传递令牌 - 通过跨站点脚本窃取更容易。