如何在CouchDB中使用户令牌无效?

时间:2017-08-09 21:24:33

标签: cookies couchdb

官方文档说明了有关删除用户cookie的以下内容: Link

  

DELETE / _session

     

通过指示浏览器清除cookie来关闭用户的会话。从服务器的角度来看,这不会使会话失效,因为没有办法这样做,因为CouchDB cookie是无状态的。这意味着从客户端角度来看,调用此端点纯粹是可选的,并且它不能防止会话cookie被盗。

我可以在客户端上使cookie无效,但是如果有人窃听AuthSession=123abc并在安静中使用它会怎么样?这不是一个安全问题吗?

我想知道如何避免这种行为并真正破坏cookie,因为我希望有一个使用CouchDB的安全应用程序。

1 个答案:

答案 0 :(得分:3)

我确定我之前已经回答了这个问题,但我找不到重复的问题,所以这里再说一次:

Cookie是用户登录名的简单哈希值,创建Cookie的时间,用户的密码盐以及服务器的密码。

这意味着要使现有cookie无效,您必须等待足够的时间来传递创建的时间戳在过去已足够远,以致cookie不被视为有效,或者更改散列的其他部分之一。

实际上,这通常意味着它是不可能的,因为:

  1. 更改用户名意味着用户将无法再登录。
  2. 更改用户的密码盐也意味着用户无法再登录,除非您还存储用户的明文密码,以便可以重新计算其密码哈希值。 (可能是一个非常糟糕的主意)
  3. 更改服务器密钥会使所有用户的所有会话无效,而不仅仅是您要定位的用户
  4. 如果活动会话无效是您的应用程序的一项硬性要求,则最好在处理身份验证的反向代理服务器中完成,并使用proxy authentication与CouchDB进行交互。