Javascript 在ember中处理返回用户是否安全?

Javascript 在ember中处理返回用户是否安全?,javascript,cookies,ember.js,web-applications,Javascript,Cookies,Ember.js,Web Applications,我正在使用ember为需要用户登录的站点编写web ui。假设浏览器存储了用户上次登录时的一些cookie。现在用户再次访问该站点。那么,对于ember来说,基于上次访问的cookie自动登录用户是否是一种安全且通用的方式?如果是的话,有什么常见的方法来实现这一点?(我在谷歌上找不到任何东西。)此外,我如何在登录时创建cookie?将用户id、密码散列和过期信息放入cookie是一种常见的方法吗 此外,非常感谢与本主题相关的任何参考资料 编辑1 根据Vohuman的回答,我想我可以让我的问题更具

我正在使用ember为需要用户登录的站点编写web ui。假设浏览器存储了用户上次登录时的一些cookie。现在用户再次访问该站点。那么,对于ember来说,基于上次访问的cookie自动登录用户是否是一种安全且通用的方式?如果是的话,有什么常见的方法来实现这一点?(我在谷歌上找不到任何东西。)此外,我如何在登录时创建cookie?将用户id、密码散列和过期信息放入cookie是一种常见的方法吗

此外,非常感谢与本主题相关的任何参考资料

编辑1
根据Vohuman的回答,我想我可以让我的问题更具体一点。基本上,我想知道的是一个通用且安全的实现,它可以让用户登录,即使他们关闭并重新打开浏览器。也就是说,生命时间超出了会话范围。以linkedin为例。如果您已登录并退出浏览器。下次你再访问linkedin时,你仍然会自动登录。现在,我能想象的是一个如下的解决方案

当您首次登录站点时,服务器将返回一个包含身份验证哈希令牌的cookie。然后,下次您重新访问站点时,服务器将收到哈希令牌,从而对您的会话进行身份验证

那么,上面的流程基本上就是人们通常用来让用户登录的吗?如果是这样的话,JSON Web令牌(JWT)基本上是构造我上面提到的哈希令牌的一种方法吗?此外,假设连接是HTTPS,这种方法对我来说似乎是安全的。不是吗

编辑2
提供了一个关于在何处存储访问令牌的有趣讨论

对于ember来说,根据上次访问的cookie自动登录用户是否是一种安全且常见的方式

是和否。安全是一个复杂的话题。通常,会话cookie用于授权用户。这实际上是保持用户登录最常用的方法。如果用户不能保证其凭据的安全,那么任何安全层都可能受到攻击

对于单页应用程序,通常使用访问令牌,而不是cookie和会话。客户端发送用户凭据,服务器返回访问令牌。令牌已加密且可过期,可以存储在
localStorage
sessionStorage
中。使用是在web服务中实现用户身份验证和授权的常用方法。例如,Facebook开放图形API使用访问令牌

JSON Web令牌(JWT)是一种紧凑、URL安全的表示 在双方之间转让的债权。JWT中的索赔 被编码为JSON对象,用作JSON的有效负载 Web签名(JWS)结构或作为JSON Web的纯文本 加密(JWE)结构,使声明能够数字化 用消息身份验证代码签名或保护完整性 (MAC)和/或加密

编辑:

那么,上面的流程基本上就是人们通常用来让用户登录的吗

对于传统网站,是的

使用访问令牌的全部目的是保持web服务/API无状态。这意味着服务器不必存储任何cookie/会话来验证和授权用户。无状态是实现遵循该范式的web服务的关键因素之一。客户端必须存储令牌并将其发送到服务器(通过授权头或查询参数)。服务器不存储令牌。当然,如果您想添加另一层安全性,您可以将令牌存储在服务器上,但这并不常见,也没有必要。将令牌存储在服务器上也会使应用程序容易受到数据库攻击,因此不建议这样做

如果您想使流程更加安全,可以缩短访问令牌的有效时间(1小时、1天或1周,由您决定)

至于本地存储,它安全吗


localStorage
为每个源(域)分别存储数据。恶意用户只有在有权访问用户浏览器时才能读取数据。你应该确保你的应用没有任何XSS漏洞,这样恶意用户就不能向你的应用注入任何脚本。这实际上是一个不同的话题。

谢谢您的回答。我根据你的回答更新了我的问题。不过,我对你的答案并不完全肯定。特别是,假设我想让用户在当前会话之后继续登录。那我猜会话存储是行不通的,对吧?至于本地存储,它安全吗?它能被恶意网站挖掘吗?我刚刚发现了一篇关于在cookie或web存储中存储JWT令牌的有趣文章,它实际上建议使用cookie而不是web存储: