在我的一些帖子中,当我将用户信息存储在cookie中时,所有的评论和回答都说了类似这样的话,"…问题的答案是……但不要使用cookie来存储用户信息。它是不安全的。"
在我的一个测试网站中,我存储了一个名为"user"的cookie,其中包含登录用户的用户名,以及一个会话变量。我知道这可能是个人信息,但网页上写的是用户名,这有什么关系吗?
如果黑客可以进入我的网站,改变"用户"cookie和会话的值,并在没有用户名的情况下登录某人的帐户,那就很重要了。
这可能吗?如果有,怎么做?
此外,如果我需要更新我的安全,我怎么能有一个选项"保持登录"没有cookie?
谢谢你的帮助
是的,cookie存储在客户端,可以修改
那么如何防止入侵者修改数据呢?我想为此引入两种机制:存储在会话中,使用Cookie访问
因为Http是一个无状态协议,服务器将保存一个cookie通常名称session_id和客户端将发送它与每个请求。通过这种机制,服务器可以找出哪个用户正在请求。
服务器可以将用户数据存储在所谓的会话变量中,并且可以访问它们,只有在服务器和客户端不能修改它们。
的例子:
在服务器的会话存储(磁盘,数据库或ram):
27: ["username" => "foo"]
35: ["username" => "bar"]
95: ["username" => "fuzz"]
在每个客户端的cookie上:
客户1:"session_id" : 27
客户2:"session_id" : 35
客户3:"session_id" : 95
这个方法有一个向下:
每个数据都需要存储在服务器上,这会消耗服务器的空间。
存储在Cookie中,使用Key
访问另一种方法是将数据存储在用户cookie中,但是在存储它们之前,用密钥加密。
由于它们是加密的,并且客户端没有访问密钥,因此入侵者无法对数据进行任何有效的更改。
在这种方法中,您只需要在服务器上存储加密密钥。
不占用服务器空间(磁盘或内存)
向下:因为每个http请求都从客户端发送数据。占用服务器的带宽。
例如:Laravel Framework的Cookie是加密的