php中用户验证的方式,在php中进行用户身份验证的最佳方式是什么?

使用

Sessions.将会话ID存储在cookie中,并将用户的状态存储在服务器端(loggedIn,userId,IP).

澄清您需要存储在会话数组中:

> loggedIn:一个关于用户是否登录的布尔变量.您可以为多个会话重复使用相同的Cookie,因此您可以在下次访问您的网站时记住用户的用户名等.

> userId:数据库中用户的uniqe id.使用它来获取用户的更多信息,如用户名,电子邮件等.在用户注销后,这也可以保存在会话数组中.

> IP:为了防止某人窃取会话ID并使用它,您还可以存储用户的IP.这是可选的,有时您希望允许用户漫游(例如,当IP更改时,stackoverflow允许我使用笔记本电脑进行移动,而无需登录).

> lastPing:用户上次看到的时间戳.可以使用它,而不是cookie过期日期.如果您还存储会话的生命周期,则可以由于不活动而将用户记录在外.这意味着会话id cookie可以存储在用户计算机上很长一段时间.

当用户由于不活动而退出或注销时,只需将loggedIn设置为false即可.当用户使用正确的用户名和密码登录时,将loggedIn设置为true并更新其他字段(userId,IP,lifetime).当用户加载页面时,会根据当前时间和生命周期检查lastPing,并更新lastPing或注销用户.

会话数据可以存储在文件系统或数据库中.如果存储在数据库中,则userId是用户记录的外键,或者所有数据都可以放在用户记录中.

哈希

重复一次值不是一个好主意,因为你reduce the security.而是使用salt,结合静态盐(例如页面的名称)和用户的用户名以及密码.需要很长时间的哈希并不比快速哈希更好,导致大量摘要的散列比导致短消息(由于暴力)的哈希更好.使用SHA1应该足够正常的站点(IE,而不是银行或秘密军事组织).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值