0

当从另一个客户端(例如 2 个不同的浏览器)到达服务器时,有什么方法可以删除或过期存储在客户端中的 httpOnly cookie?

我想创建一个“全部注销”按钮,从每个设备上注销用户,现在我将 cookie 存储在数据库中,并在用户单击“全部注销”时将它们从数据库中删除,然后我仅在以下情况下进行身份验证cookie 存储在数据库中。这种方法够吗?它有任何安全问题吗?

4

1 回答 1

0

如果没有来自拥有它们的浏览器的请求,您无法删除仅 HTTP cookie。仅 HTTP cookie 只能通过Set-Cookie标头修改。

到目前为止,我将 cookie 存储在数据库中,并在用户单击“全部注销”时将它们从数据库中删除,然后我仅在 cookie 存储在数据库中时进行身份验证。这种方法够吗?它有任何安全问题吗?

这取决于您如何生成它们。如果您使用 CSPRNG 生成随机令牌,则该方法是安全的并且推荐使用,因为如果攻击者可以访问用户登录的计算机,则用户可以撤销令牌(假设无法使用以下方法更改密码)令牌)。

于 2020-07-14T10:38:05.980 回答