【发布时间】:2014-06-20 09:11:00
【问题描述】:
在我的一些帖子中,当我将用户信息存储在 cookie 中时,所有的 cmets 和答案都会这样说,“......回答问题......但不要使用 COOKIES 来存储用户信息。它是不安全。”
在我的一个测试网站中,我存储了一个名为“user”的 cookie,它保存了登录用户的用户名以及一个会话变量。我知道这可能是个人信息,但网页上显示的是用户名,这真的很重要吗?
如果黑客可以进入我的网站以更改“用户”cookie 和会话的值,并在没有用户名的情况下登录某人的帐户,这将很重要。
这可能吗?如果有,怎么做?
另外,如果我需要更新我的安全性,我如何在没有 cookie 的情况下选择“保持登录”?
感谢您的帮助。
【问题讨论】:
-
Cookies 由用户控制。任何人都可以添加、删除或更改任何 cookie 的值。
-
使用跨站点脚本可以窃取 cookie。会话 cookie 仅存储会话 ID(无意义,其中没有实际的用户数据),会话变量及其值在您的网络服务器上。对于您的“让我登录”,请参见例如link
-
尝试 Google 无会话 cookie。
-
您还可以将会话数据保存在数据库中,这样您就可以在用户返回您的站点时恢复会话。这是一个教程:shiflett.org/articles/storing-sessions-in-a-database
-
Javascript webStorage 和
$_SESSION是您可能想要使用的两个替代方案。$_SESSION['username']比$_COOKIE['username']好得多,因为您可以相信您的用户不能直接更改$_SESSION数据。
标签: php security session cookies client