在PHP会话中存储用户密码是否常见?

cto*_*ife 7 php security session

这是php Sessions的新手.我存储的用户数据非常小,而且不是很敏感但当然我还想要一个安全的网站.我已经使用salt将他们的密码哈希存储在我的数据库中.

我是否需要使用他们的密码在我网站的每个页面上验证用户,或者是否过度杀伤?换句话说,如果他们已经成功"登录"并且我已经在php会话中存储了他们的用户名,那么他们就可以漫游,网站知道他们是谁?

我问,因为在会话中存储用户密码似乎不是最好的主意.真的吗?

Dol*_*lph 8

您无需对每个请求进行身份验证,但您需要对每个请求进行授权.

身份验证是您根据数据库验证用户的用户名/密码的位置.成功通过身份验证后,您只需将其用户ID(或用户名)存储在会话中.

在每个后续请求中,检查以确保当前会话有权查看请求的内容.在您的情况下,您可能只需要确保会话中有一个有效的用户ID ...您不必对数据库执行任何操作.

您可以使用类似于以下的功能来对每个请求进行授权:

function isAuthorized() {
    return isset($_SESSION['user_id']) && ($_SESSION['user_id'] != 0);
}
Run Code Online (Sandbox Code Playgroud)

您可以通过在数据库中管理自己的会话数据来使这更加安全,然后您就不必非常相信cookie(恶意)用户可以交易/窃取/等等.但对于大多数网络应用来说,这通常是过度杀伤力.


Ign*_*ams 5

不要存储密码.相反,存储一个可以在单独的表中检查是否存在的身份验证令牌.