好的,是的,我已经阅读了关于这个主题的其他问题,但我有几个问题,有些问题已经有好几年了。
无论如何,我正在为一家包含敏感客户信息的保险公司建立一个admin cp。如密码,社会安全号码和司机#。
第一个问题: 什么更安全,PHP会话或cookie?根据我对cookie的理解,您可以将它们严格限制为仅限http和SSL。不知道你是否可以用php会话做同样的事情。似乎php会话只是快速的cookie。 Cookie看起来更灵活,同样可靠。仅供参考,我只使用带有http和SSL的Cookie。在我的案例中是否有充分的理由使用php会话?
第二个问题: 我的会话/登录工作如下: *密码被盐渍和散列 *会话长度为32个随机字符 *当用户输入正确的pw并且与用户的IP绑定时,会验证会话 *当用户登录时,会话ID和用户密码存储在2个单独的cookie中
如果会话通过用户pw验证并绑定到用户的IP,我可以只使用会话Cookie并删除pw cookie吗?因为我觉得它有点多余,因为如果输入正确的PW,你只能获得会话ID。我宁愿让会话ID在一个cookie中暴露而不是pw(尽管它仍然是盐渍和散列的)。
如果可以回答我的两个Q,请欣赏它。欢迎提供额外的安全建议:D
注意:会话与IP绑定,因为它大大提高了安全性。当我们在我们的数据库中拥有SSN和驱动程序许可证#时,我宁愿让我的用户在他们的IP更改时输入他们的pw有点不方便。只有3-5个用户也可以访问系统。
答案 0 :(得分:3)
答案 1 :(得分:0)
我说Sessions更安全(你也可以应用一些加密来提高安全性)。
您还可以使网站(管理员CP)仅适用于SSL。这样,数据在网络上的纯文本中不可见。
答案 2 :(得分:0)
Cookie中的密码是否已被盐渍和散列?要小心 - 这个问题没有好的答案!
将会话与IP绑定确实没有多大帮助 - IP很便宜,很容易被欺骗等等。我会使用SSL,cookie /会话,甚至可能是一次性cookie,在每次网页浏览时使用和重置。
答案 3 :(得分:0)
会话存储在服务器上,可以存储在数据库,文件系统,内存缓存等中。用户通过会话ID绑定到会话,会话ID存储在客户端的cookie或URL中。两者都不是“非常非常”安全,因为通过窃取会话ID可以进行会话劫持。但是,既然你已将会话ID绑定到IP,那么你已经做得足够了。
现在将密码存储在cookie中。不要这样做。 <强>从不即可。即使它们是哈希和咸,但攻击者看不到它们仍然更好。如果它们仅存储在数据库中,那么您将获得另一级别的安全性,因为在这种情况下,攻击者还必须进入数据库。
如果您在执行任何可能危及系统的重要操作之前使用session_regenerate_id()
重新生成会话ID,则会有所帮助。另外,看一下XSS和CSRF攻击以及防止它们的机制,比如表单令牌。