在php Session变量中存储“密码是否正常”?

时间:2010-10-17 09:33:06

标签: php javascript mysql html security

将密码存储在会话变量中是否安全?

例如,用法将采用提交给自己的形式。

例如,更改分类页面,用户首先输入密码,然后如果pass = ok,则显示表单以更改分类。全部在同一个php页面上。

但是每当在php页面的“更改”部分上传图片时,表单必须再次提交给自己。

我是否应该使用商店会话密码来验证用户实际上是用户,并确保其安全?

换句话说,存储这样的东西是否安全:

 if($pass==$row['password']){ // If password was correct
    $_SESSION['pass_ok']='1';
 }

由于

4 个答案:

答案 0 :(得分:10)

Camran,你要做的是维护php会话的标准方法。实际上,您并未在会话中存储密码,而只是存储此特定用户已登录的信息。      $ _SESSION [ 'pass_ok'] = '1';

在每个页面上你只需要做一个session_start()并检查这个会话是否已经设置为1,如果是,他们会假设他被记录并继续进行,否则重定向到登录页面。

如果有人获得会话ID,那么他们肯定可以访问用户会话。你可以做一些事情来使它更安全。

  • 使用SSl(https),很难嗅探数据并获取会话ID
  • 在用户登录时在会话中维护客户端IP,对于登录后的每个请求,检查请求是否来自同一个IP
  • 设置一个短暂的会话超时,以便在会话空闲一段时间后自动超时。

答案 1 :(得分:1)

使用预先构建的身份验证系统。这是你最安全的选择,因为他们已经(或者应该)已经考虑过所有事情(安全问题)。

答案 2 :(得分:0)

我做的是,

  1. 正确检查用户登录
  2. 将会话分配给用户名+ userLOGGEDIN会话
  3. 当点击一个页面时,我的系统会在数据库中搜索用户名+ userLOGGEDIN,如果它的真实然后允许访问该页面,但它的作用是删除它刚搜索到的记录,并为其插入新记录。用户名+ userLOGGEDIN与不同的MD5 HASH。所以希望它更难破解。

答案 3 :(得分:-2)

我会反对它。如果有人登录并将会话ID复制下来,理论上可以登录任何页面。我建议你在每次刷新页面时检查密码是否正常,因为这样会更安全。

此外,始终将密码存储在数据库中,或者更好的是,使用盐进行散列。