关于PHP中的会话和cookie的一些问题

时间:2011-04-23 15:46:36

标签: php security session cookies login

我是PHP的新手,我已经阅读了很多关于cookie和会话的教程,但我不明白一些事情:

  1. 会话值存储在服务器上,只有会话ID存储在用户计算机中。右

  2. 我可以创建一个永不过期的会话,永远不会从服务器中删除并将会话ID保存在cookie中吗?如果是的话怎么样? (请提供一些代码)

  3. 将Cookie中的数据存储在Cookie中是不好的,因为Cookie不安全?对吗?

  4. 黑客有可能创建一个会话ID为另一个用户的cookie吗?黑客可以猜测会话的会话ID或最差,每个会话ID的列表吗?

  5. 对于一个能够记住用户的好的登录系统(用于论坛或用户拥有某些数据的网站),最好将cookie,会话或两者的组合与会话ID存储在cookie中吗?

  6. 请提供一些代码,说明如何将会话ID存储在cookie中,以及如果我知道会话ID

  7. 我可以如何访问会话

    谢谢!

2 个答案:

答案 0 :(得分:3)

让我们看看......

  1. 永不过期的会话?不是一个好主意:
    • 你的服务会充满旧的,无用的会话
    • 相反,您应该将一些数据存储在持久的cookie中;当用户稍后回来时,使用该cookie重新创建会话(例如,自动连接用户)
  2. Cookie确实不安全:它们以未加密的方式存储,并且未加密地通过网络(除非您使用HTTS)。
  3. 如果您的黑客可以获取其他用户的会话ID(通常是通过阅读他的Cookie),是的,他可以访问他的会话
  4. 我会同时使用两者:无论如何,如果使用会话,则需要一种方法来存储其标识符。
  5. 将会话ID存储在cookie中?如果配置正确,PHP将为您执行此操作; - )

答案 1 :(得分:1)

  1. 是的,PHP会话存储在服务器上。
  2. 你不想这样做。这是浪费磁盘空间。
  3. 不,这不好,因为cookie是以非加密和明文形式存储的,你绝不应该向用户发送明文密码。
  4. 如果他知道会话ID,那么他可能能够接管会话(将会话与用户的IP联系起来有助于解决这个问题)。这是为什么XSS是危险的事情之一。
  5. 使用会话并将用户ID存储在其中。如果您已经拥有sessionid cookie,则无需使用单独的cookie。
  6. 如果要更改会话Cookie设置,请使用session_set_cookie_params();例如使它永久化。