将随机值存储为表中的会话“密钥”是否安全?

时间:2012-10-23 03:48:43

标签: php mysql

我是第一次使用用户帐户构建网站。我正在使用户登录安全。在注册时,我在保存之前对密码进行哈希处理,然后在登录时使用密码如果传递正确,我使用setCookie保存带有用户信息的cookie。

现在劫持帐户就像修改cookie值一样简单。我想让网站安全,但我正在阅读的大多数选项看起来太复杂了,我想用自己能做的事情。我已经阅读了几本教程,并对如何操作有一个基本的了解,但不知道它有多安全。

我的想法是为会话创建一个表并存储userid +一个随机值,用两者保存一个cookie并检查每个页面对表加载两个值并在它们正确时更新它们。这看起来很简单,即使用户从不同的地方登录也可以工作,但我不知道它有多安全。 cookie是可见的,但我没有看到任何劫持会话的方法,除非有人偷了cookie并在更新之前使用它。

这样安全吗?我还可以使用其他简单方法吗?

1 个答案:

答案 0 :(得分:2)

为什么不将用户名存储在会话变量中?客户端存储随机ID并将其呈现给服务器。然后,服务器将其与用户名(服务器在本地使用)进行匹配。 只有服务器才能看到用户名。代码也非常简单,PHP会创建随机ID并将其提供给客户端。此外,如果用户将ID更改为其他内容,则他们很可能会遇到另一个存在并且正被另一个登录用户使用的ID。

session_start();

//setting the username after they log in
$_SESSION['username'] = $username;

//retrieving the username
//this will work from any file as long as they are on the same server for the same domain
$username = $_SESSION['username'];