保证会议的最佳方式(咨询)

时间:2011-09-26 06:27:15

标签: php security session session-cookies

好的,是的,我已经阅读了关于这个主题的其他问题,但我有几个问题,有些问题已经有好几年了。

无论如何,我正在为一家包含敏感客户信息的保险公司建立一个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个用户也可以访问系统。

4 个答案:

答案 0 :(得分:3)

  • 将用户密码存储在Cookie中,不得以任何形式表示。
  • 经常重新生成会话ID
  • 使用强哈希(没有MD5),如SHA512(也考虑stretching哈希)
  • 敏感数据应位于服务器端会话存储中:
    • Cookie会随着每个请求发送到Cookie域,从而增加被截获的可能性。服务器端会话数据仅在需要时输出。
  • 将会话绑定标识符作为身份验证令传递给每个敏感请求以避免CSRF
  • 不要直接将会话绑定到IP。使用相同AP或私有ISP的两个人具有相同的IP,会话可能会混淆。
  • SSL为not magical。不要过多继电器。

答案 1 :(得分:0)

  1. 会话存储在服务器上,cookie存储在客户端(浏览器)上。属于用户的会话数据由cookie(会话ID)标识。
  2. 我说Sessions更安全(你也可以应用一些加密来提高安全性)。

    1. 不要将用户密码存储在cookie中。即使它是哈希,也不是一个好习惯。 您可以存储包含必要信息的加密序列化数组,以对用户进行身份验证:ip,用户代理,用户名,用户ID,而不是密码。
    2. 您还可以使网站(管理员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攻击以及防止它们的机制,比如表单令牌。