如何检查用户令牌在CouchDB中是否仍然有效?

时间:2017-08-08 08:52:04

标签: php authentication cookies couchdb

如果您想要与用户一起登录,请向POST发送http://localhost:5984/_session请求并获取Cookie。默认情况下,此Cookie有效期为10分钟,并存储在我的$_COOKIE变量中。

在我的场景中,我希望用户能够根据他登录的事实(例如,有一个有效的令牌)与我的网站进行交互。我的问题是如何检查用户cookie是否仍然对我的CouchDB有效?

1 个答案:

答案 0 :(得分:3)

借鉴here

  

CouchDB的cookie算法(查看源代码)基本上是data = username + ':' + timestamp; base64(data + ':' + sha_mac(data, secret))。其中secretcouch_httpd_auth.secret值加上用户的盐值。

这意味着如果您只想检查时间戳,您可以对Cookie进行Base64解码,然后从结果中提取时间戳,并与当前时间进行比较。

如果您想要实际验证cookie是否有效(即未伪造),您需要知道用户的密码salt和服务器密码。如果这是一个客户端应用程序,这是危险的。即使它是一个服务器应用程序,它也会将敏感信息放在更多地方,这会带来额外的安全风险。这些风险是否值得,取决于您和您的实施。