网站用户可以更改Cookie或会话数据吗?

Jon*_*Lam 5 php security cookies session client

在我的一些帖子中,当我将用户信息存储在cookie中时,所有评论和答案都说,诸如“……问题的答案……但不要使用Cookie来存储用户信息。这是不安全的。”

在我的一个测试网站中,我存储了一个名为“ user”的cookie,其中包含已登录用户的用户名以及会话变量。我知道这可能是个人信息,但是在网页上显示的是用户名,这真的很重要吗?

黑客能否进入我的网站来更改“用户” Cookie和会话的值,并在没有用户名的情况下登录某人的帐户,将很重要。

这可能吗?如果是这样,怎么办?

此外,如果我需要更新安全性,我如何选择没有Cookie的“保持登录状态”?

谢谢你的帮助。

Abi*_*gos 2

是的,Cookies存储在客户端并且可以修改

那么如何防止入侵者修改数据呢?我想为此引入两种机制:

存储在Session中,通过Cookie访问

因为Http是无状态协议,服务器会保存一个cookie,通常名为session_id,客户端会在每次请求时发送它。通过这种机制,服务器可以找出哪个用户正在请求。

服务器可以将用户数据存储在所谓的会话变量中,并且只能在服务器中访问它们,并且客户端不能修改它们。

例子:

在服务器的会话存储(磁盘、数据库或 RAM)上:

27: ["username" => "foo"]
35: ["username" => "bar"]
95: ["username" => "fuzz"]
Run Code Online (Sandbox Code Playgroud)

在每个客户端的 cookie 上:

客户1:

"session_id" : 27
Run Code Online (Sandbox Code Playgroud)

客户2:

"session_id" : 35
Run Code Online (Sandbox Code Playgroud)

客户端3:

"session_id" : 95
Run Code Online (Sandbox Code Playgroud)

这个方法有一个Downward

每个数据都必须存储在服务器中,并且会消耗服务器的空间。

存储在Cookie中,通过Key访问

另一种方法是将数据存储在用户 cookie 中,但在存储它们之前,使用密钥对其进行加密

由于它们是加密的并且客户端尚未访问密钥,因此入侵者无法对数据进行任何有效的更改。

在这种方法中,您只需将加密密钥存储在服务器上。

它不消耗服务器空间(磁盘或内存)

向下:因为每个数据都是在每个 http 请求中从客户端发送的。它消耗服务器的带宽

例如:Laravel 框架的 Cookie 是加密的。