【发布时间】:2015-05-28 14:09:37
【问题描述】:
总结问题
有哪些论据支持或反对在会话中保存密码哈希?
想法
在登录时将密码哈希(在数据库中)存储在会话中,并在每次访问时根据数据库哈希对其进行验证,以便在密码更改时自动使所有会话无效。
我的想法
这些是我目前对这个主题的想法。
专业版
- 假设两个人合法地共享一个帐户,它将(大部分)防止在另一个人登录时都更改密码的竞争条件。混淆只会发生一次而不是两次。
- 假设恶意攻击,如果及早发现,合法用户可以踢出攻击者。
骗局
- 如果 A 在 B 更改密码后立即提交表单,可能会丢失数据。
- 假设恶意攻击,攻击者可以踢出合法用户。
中性
- 没有真正的性能影响。 (编辑:因为出于其他原因,我在每个页面加载时都会加载用户信息。)
- 几乎不存在安全问题。如果有人可以访问服务器,那么访问具有所有哈希值的数据库的工作量与访问具有登录用户哈希值的会话存储区的工作量相当。
请回答和评论
我不想在这里开始主观讨论。我想收集(尽可能客观)关于该主题的利弊。我还没有考虑什么?
编辑:
澄清:使所有会话(用于更改密码的会话除外)无效的想法来自“如果一个人更改密码而不告诉某些其他人这是有原因的,那么他们应该立即放松访问。”,假设没有恶意用户(那将是多么美妙的世界……)。
【问题讨论】:
-
我会问为什么会话会因为密码更改而失效?
-
如果您只想在更改密码时使会话无效,我会使用某种“最后修改日期”并使用它。这不是防止会话劫持的正确方法,所以如果你想防止这种情况,也许谷歌寻找另一种防止会话劫持的解决方案。 (最后一部分只是一个假设)
-
@DarkFalcon 这是我的一个想法。这个想法类似于“如果一个人在其他人不知道可能有原因的情况下更改密码,那么他们应该立即失去访问权限”。那时我并没有考虑恶意用户。
标签: php apache security session