2012-10-23 42 views
1

我正在用户帐号首次构建网站。我正在使用户登录安全的过程中。在注册时,我在保存密码之前对密码进行哈希处理,然后在登录时如果密码正确,我使用setCookie将用户信息保存到cookie中。将随机值作为会话“密钥”存储在表中是否安全?

现在劫持一个账户就像修改cookie值一样简单。我想让网站安全,但我正在阅读的大多数选项似乎太复杂了,我想用自己能做的事情。我已经阅读了一些教程,并对如何做到这一点有一个基本的想法,但不知道它有多安全。

我的想法是做一个表,会话和存储用户ID +随机值,保存一个cookie既和检查每一个页面加载对阵表两个值和更新他们,如果他们是正确的。这似乎很简单,即使用户从不同的地方登录,但仍然可以工作,但我不知道它有多安全。 Cookie将可见,但我没有看到任何劫持会话的方式,除非有人偷走了cookie并在更新之前使用它。

这种产品是否安全?我可以使用其他什么简单的方法?

+0

如果有人偷了_that访问kind_给你数据库然后你拧任何一种方式。只需将cookie存储在数据库中,并确保数据库安全。 – noel

+0

@pst,真的吗?它似乎违反了“一次使用的数字*”的定义。 –

+0

@ElYobo我最初把“续约他们,如果他们是正确的”为价值的再生。 – 2012-10-23 04:13:38

回答

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']; 
+0

我一直在使用它,直到最近。我不知道它是安全的。问题是,很难使其与使用相同的源,这在我以前的网站的情况下,许多领域的工作,所以我切换到setcookie()函数。这真的很安全吗?如果有人复制cookie,会发生什么情况? – lisovaccaro

+0

我的意思是随机ID很容易访问?无论如何,我不想让它变得相当安全。除非出现其他情况,否则我可能会选择这个。 – lisovaccaro

+0

@ Liso22是的,这是非常安全的。我想强调只有服务器知道用户名。客户端有一个随机ID,当提交给服务器时,服务器将其与用户名相匹配。另外,是的,随机ID很容易被访问。真的没有办法阻止某人复制ID并使用它。您需要一种跟踪用户的方式,并且当您向客户提供任何信息时,您应该完全期望用户查看它。也许你一次只能允许一个IP地址使用一个cookie。 –

相关问题