存储自定义身份验证令牌的最佳实践



我现在感觉真的很愚蠢——我是一个经验丰富的javascript&PHP开发人员,但我就是无法理解这一点!

我开发了一个系统,允许用户创建小部件,并通过包含一个动态生成的javascript文件将它们嵌入到自己的网站上。我现在已经加入了一个身份验证系统,这样这些小部件的用户就可以在我客户的网站上注册和登录。注册详细信息存储在我的服务器上。

当用户注册或登录时,我计划发回某种加密的令牌(他们的唯一ID(,这样当他们下次访问同一网站上的小部件时,代码会通过将令牌发送到我的服务器并解密来自动登录

但是,如果该令牌通过localStorage或cookie存储在浏览器中,则任何能够获得该令牌的人都可以复制并粘贴该令牌,从而使他们能够以该用户身份登录。有没有什么方法可以在没有这种风险的情况下实现我想要的?

提前感谢!

您可以使用JWT。服务器向前端生成JWT,当前端接收到JWT时,它将把它存储到本地存储中。只要您确保用户不能在您的应用程序上执行任何XSS,本地存储就是保存JWT的安全场所。

如果你在HTTP头中发送CSRF,你也可以用JWT来解决它。这样可以确保未经授权的请求不会通过其他域。您应该查看这个PHP JWT库。我在自己的项目中使用过它。

PHP-JWT

我决定发回一个由用户(编码的(id、密码和salt组成的哈希令牌。我存储他们编码的id和令牌,然后在自动验证时将这两个细节发送到服务器。如果用户的帐户通过使用此令牌而被泄露,他们可以更改密码以使其无效。

最新更新