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