成功交易后更新用户/将散列后的pword存储为会话变量



我有一个免费和付费计划的web应用程序。

用户选择一个计划,然后注册。在注册后,在他付款之前,我用一个免费帐户登录用户。一旦他付款并且交易回调成功,我想让他再次登录他付款的新计划。我想到的一种方法是:

1) 用户注册2) 他注册了一个免费帐户,散列后的密码存储为php会话var3) 他付钱4) 交易成功5) 我调用一个php文件,该文件查找散列密码会话var,并根据该更新用户

这种方法有什么明显的错误吗?可以将散列后的pword用作会话var吗?此流程是否存在明显的安全风险?

从安全的角度来看,我总是避免对任何标识符使用密码,无论怎样。另外!-用户可以有相同的密码,所以它可能不是唯一的(当然,你可能在腌制你的哈希,但取决于你的盐的唯一性,你仍然可能有这个问题…)

在您的会话中,我假设您为用户存储了自己的唯一标识符。这就是你查找的方式。然后,您可以更改用户(或计划)在数据库中的角色。

如果你需要立即、实时地进行更改,你有两个选择:

您的用户身份验证和授权系统可以在每次加载页面时访问数据库以获取最新的用户信息。这可能不是一个好主意,因为在用户的"寿命"中,你只需要一次这个功能

第二个选项是在付款后为用户的会话设置一个设置,告诉用户在每次页面加载时只检查数据库THEN。一旦您更新了数据库,并且用户看到了更改,并将其应用于当前用户,则该标志可能会被关闭,因此它不会一直查询数据库。

当然还有其他选项:您可以在临时文件或数据库中删除用户的会话(如果您使用数据库存储会话信息),并强制他们登录。我相信还有很多,但我建议采用上面的临时主动方法(第2条)。

如果你需要更多的澄清,我很乐意帮助你。发表评论!:)

最新更新