php - 求经验,关于SESSION 存储用户验证信息
大家讲道理
大家讲道理 2017-04-10 14:28:54
[PHP讨论组]

根据搜索查阅各位的资料经验,用户登录以后把密码存放在session里面是不可取的,这个我也认同这个观点。

假如目前网站登录成功以后会在session存放2个变量:userid和username,现在项目因为一些特殊的原因要求每一页面都验证一次用户密码,那么怎么进行对比好?查找到这个用户能获取到数据库里的密码,但是session里没有密码,怎么进行对比验证?

我想还是应该把密码信息存放在session里面,但怎么做才安全?描述的比较混乱,请见谅。

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(3)
黄舟

随机生成一个token,保存在session和数据库中,代替用密码进行对比验证。

token隔一段时间更新一次。

巴扎黑
  1. 首先,数据库里面也不要存放密码,一般只存放hash后的密文;
  2. 其次session中的用户信息,一般都是用户登录成功后才写入,session失效时间即表示在指定时间内用户有效,不太理解为什么每个页面都要验证一次密码,这样用户也会填的很烦;
  3. 即使每个页面都要验证一次密码,也不要在session中放置密码,可以通过用户提交的密码hash密文与数据库中保留的hash密文进行比对;
  4. 强烈建议在前端对userid、页面的url和提交时间进行hash生成唯一的token,然后在服务端同样对session中userid和页面的url以及提交时间进行hash生成唯一的token,对这两个token进行比对验证;
PHP中文网

不同的用户访问网站时都会分配不同的SESSIONID,关闭浏览器后,再次打开也会分配不同的SESSIONID。SESSION本来就是与用户相关的,通过来讲只要验证SESSION中的userid是否存在即可。存在SESSION['userid']就代表着这是一个经验验证的用户。因为只有通过验证后,才会把userid写入SESSION。

密码只在一些必须的操作时,要求再次输入进行。SESSION中不存,是不需要存,而不是每次都需要到数据库中去查询对比。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号