试图了解登录系统和会话

时间:2016-02-24 00:51:06

标签: node.js session authentication encryption login

我试图了解用户如何保持记录(我试图在没有框架的节点上实现此功能,以便学习)。基于我认为理解的几个问题:

(1)当用户尝试登录时,它会在HTTP请求正文中发送用户和密码

(2)当数据到达服务器时,它会检查所需的所有内容,例如用户是否存在以及密码是否正确

我想,我的问题是:用户如何记录?第三步将是:

(3)服务器创建所需的所有会话数据,加密并发送给客户端?

(4)客户端将加密数据存储在localstorage

(5)每次向服务器发出请求时都会发送凭据,服务器会在处理每个用户的操作之前对其进行解密并检查。

这就是我的理解。但我发现这非常值得。我觉得我错过了很多...在客户端存储数据似乎(至少对我来说)安全。会话数据应该存储在服务器端吗?如何安全地发送用户名和密码?它必须是客户端加密的吗?这样安全吗?我想我正在寻找一些模式,或者我不知道。我感到迷茫。

是的,抱歉我的英语不好,知识匮乏。我不是要求代码,我也会欣赏任何提示(比如在谷歌或有趣的博客搜索什么):)

谢谢你,联合国阿布拉索:)

---编辑--- 好吧,最后我建立了一些有用的链接并解决了我的大部分疑虑:)

[http://stackoverflow.com/questions/6922145/what-is-the-difference-between-server-side-cookie-and-client-side-cookie][1]
[http://blog.codinghorror.com/protecting-your-cookies-httponly/][2]
[http://www.cse.msu.edu/~alexliu/publications/Cookie/cookie.pdf][3]
[https://es.wikipedia.org/wiki/Cookie_(inform%C3%A1tica)][4]
[https://newspaint.wordpress.com/2015/09/06/how-to-get-cookies-from-node-js-http-response/][5]

1 个答案:

答案 0 :(得分:2)

1和2是正确的。

会话通常使用cookie实现,而不是客户端本地存储,因为cookie会随着每个请求自动发送到服务器。 cookie通常只包含一个长的随机生成的ID,它引用存储在服务器端的数据,例如,在数据库中。此数据将标识用户并可能存储其他会话级设置。

也可以使用带有签名(以及可能加密的)用户信息的cookie - 例如,ASP.NET默认情况下会这样做。这样做的好处是会话不需要存储。缺点是会话不容易从服务器端销毁。因此例如向用户显示其当前活动会话(来自其他设备)并允许他们将其注销的功能无法实现。

最好通过互联网安全地使用HTTPS发送用户名和密码。不要在客户端实现自己的加密。它可能不起作用,如果连接没有经过适当的加密和验证,那么cookie本身也是可行的。