PHP安全会话和cookie

时间:2014-06-16 20:26:32

标签: php security session cookies

我不明白为什么我们必须保护cookie和会话,我有一个存储用户ID,用户名加密密码的cookie。

我有一个函数可以随时检查cookie,如果信息与DataBase信息匹配,如果没有,则重定向到登录页面。 但我不明白风险可以查看这些信息以及他可以用这些信息做些什么。

任何人都可以向我解释什么是风险?

1 个答案:

答案 0 :(得分:3)

很难准确量化。首先,请记住,cookie在客户端和服务器之间在每个请求中传输。这可能是有人拦截它们的很多机会。假设有人在某个时候拦截了 的cookie。

在cookie中存储用户名,用户ID和(加密)密码:

  • 泄露可能或可能没有用于恶意目的的信息;即为了成功登录,你需要一个用户名和一个密码,你正挥舞着高高在上的声音捕获我,用户名甚至是纯文本
  • 完全依赖于加密算法对密码的保密性;如果它已知,你有一个相当大的安全问题
    • 由于已知加密密码,因此可以对其进行离线暴力攻击,以显示加密算法和明文密码;这种攻击可能是也可能不是纯粹的理论,它存在的事实应该打扰你
    • 如果可以解密密码,那么你已经输了;密码只是一个秘密,只有用户才能知道,甚至你不想知道密码是什么;如果您 知道密码,那么您有责任保护密码,当然您不希望在整个时间内通过HTTP来回发送密码; →请参阅密码哈希
  • 让您无法控制任何内容,所有登录信息都在客户端(即如果您知道上述任何内容遭到入侵,您会怎么做?
  • 不允许您更改密码而不会使所有活动登录失效

另一方面,仅使用无意义的会话ID:

  • 显示Cookie中没有有用的信息
  • 没有机会破解或暴力破坏任何有价值的东西
  • 服务器保留最终权力,因为会话可以随时撤销
  • 它更简单(更简单,总是安全性好)
  • 使用服务器端状态的完整会话允许您升级权限;例如要求用户在当前IP的最后 x 分钟内使用他的密码主动登录,以允许他更改密码或电子邮件地址→提供安全性,即使会话cookie应该被劫持

简而言之:会话ID根本不存在攻击面,因为它们本身就没有意义。用户名,名称和密码是一个非常多汁的目标。从这些基本点来看,会议看起来应该更具吸引力。假设完美的实现与其他完美的安全性,两者都应该是相当安全的。但是,你不知道你有什么不安全感,你不会拥有完美的安全性。假设这一点,知道这个,更简单的系统应该总是更好。