2011-04-23 41 views
3

我是新来的PHP,我已经读了很多关于cookie和session的教程,但我不明白清楚一些事情:有关会议和饼干有些问题在PHP

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

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

  3. 因为cookies不安全,在cookies中存储密码等数据不好吗?对 ?

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

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

  6. 请提供给我,我怎么可以在会话ID存储在cookie中,比如果我知道会话ID

感谢我如何访问会话一些代码!

回答

3

让我们来看看...

  1. 权永不过期
  2. 会议?不是一个好主意:
    • 你的服务将得到充满旧的,无用的会话
    • 相反,你应该存储一些数据在一个持久的cookie;并使用cookie来重新创建会话(自动连接用户,例如),当用户回来后
  3. Cookie不确实保证:它们存储加密,并通过网络加密走(除非你使用HTTS)。
  4. 如果您黑客可以得到其他用户的会话ID(通过阅读他的饼干,典型的),是的,他可以访问他的会话
  5. 我会同时使用:无论如何,如果使用一个会话,你需要一个方式来存储它的标识符。
  6. 将会话ID存储在cookie中? PHP会为你做,如果配置正确;-)
+0

如果我在cookie中存储密码,但首先我使用sha1(md5('password'))加密它: – Csabi 2011-04-23 16:05:04

+0

? – Csabi 2011-04-23 16:05:38

+0

这不是加密,而是哈希:您将无法从该字符串获取密码;但我想这比明文密码好 – 2011-04-23 16:27:31

1
  1. 是的,PHP会话存储在服务器上。
  2. 你不想这样做。这是浪费磁盘空间。
  3. 不,这不好,因为cookie是以未加密和纯文本的形式存储的,您绝不应将纯文本密码发回给用户。
  4. 如果他知道会话ID,那么他可能能够接管一个会话(将会话绑定到用户的IP有助于避免这种情况)。这是XSS为什么是危险的因素之一。
  5. 使用会话并将用户标识存储在其中。如果您已经拥有sessionid cookie,则无需使用单独的cookie。如果要更改会话cookie设置,请使用session_set_cookie_params();例如使其永久。
+0

谢谢,但在问题6,你可以请给我一些代码,我不知道该怎么做该功能...你能写和PHP中的示例代码? – Csabi 2011-04-23 15:56:20

+0

#2。对于永不过期的会话,将会话数据与user_id存储在数据库中而不是服务器文件系统中。根据user_id,您可以从数据库中检索会话数据。 – 2011-04-23 15:59:31