2012-10-03 159 views
2

当用户创建一个帐户时,他会从数据库中获得一个唯一且自动递增的用户标识。因此,第一个用户的用户标识为1,创建的第二个用户的用户标识为2,依此类推。我使用PHP会话来存储登录时的用户ID,以便他们保持登录状态。阅读了几篇文章后,我发现你永远不希望PHP会话像我一样容易受到攻击(这很容易因此,我的问题是,如果我使用基于其唯一用户名的md5或blowfish为每个用户生成一个用户标识,那么这将使PHP会话保持安全吗?保持PHP会话安全

+3

PHP会话生成自己的ID和你的一切。除此之外,你无需做任何事情。如果您只是将ID存储在会话数据中,则没有问题。如果你重写默认的会话ID,那是一个不同的故事......并且是一个巨大的问题。 – Brad

+0

我正在将与该用户关联的数据库抓取的id存储到会话中。所以'$ session ['user_id']'引用从数据库中抓取的用户标识。 – jason328

+0

然后,你的实现没有问题。 – Brad

回答

1

一个好的方法将总是在登录屏幕,并立即登录后强制使用随机数

session_start(); 
$newsessid = somerandomnumberfunction(); 
session_id($newsessid); 

你也可以使用session_regenerate_id()函数生成一个NE产生一个新的会话ID w^ID

session_start(); 
session_regenerate_id(); 

读取良好

PHP Session Security

PHP Security Guide: Sessions

+1

虽然这不是直接回答我的问题,从那以后它已经在评论中得到解决,我会给你信用的答案。另外,我认为我的问题有点模棱两可,所以如果你按照我认为你阅读的方式阅读,你的回答就会有意义。 – jason328