【问题标题】:Some questions about sessions and cookies in PHP关于 PHP 中的会话和 cookie 的一些问题
【发布时间】:2011-08-11 12:45:49
【问题描述】:

我是 PHP 新手,我已经阅读了很多关于 cookie 和会话的教程,但有些东西我不太清楚:

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

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

  3. 在 cookie 中存储密码之类的数据不是很好,因为 cookie 不安全?对吗?

  4. 黑客有可能用另一个用户的会话 id 创建一个 cookie 吗?黑客能否猜测会话的会话 ID,或者最糟糕的是,每个会话 ID 的列表?

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

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

谢谢!

【问题讨论】:

    标签: php security session cookies login


    【解决方案1】:

    让我们看看...

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

    【讨论】:

    • 如果我将密码存储在 cookie 中,但首先我将其加密:
    • 这不是加密,而是散列:您将无法从该字符串中获取密码;但我想它比明文密码更好
    【解决方案2】:
    1. 是的,PHP 会话存储在服务器上。
    2. 你不想那样做。这很浪费磁盘空间。
    3. 不,这不好,因为 cookie 以未加密的明文形式存储,您永远不应该将明文密码发回给用户。
    4. 如果他知道会话 ID,那么他可能能够接管会话(将会话绑定到用户的 IP 有助于防止这种情况发生)。这就是 XSS 是危险事物的原因之一。
    5. 使用会话并将用户 ID 存储在其中。如果您已经拥有 sessionid cookie,则无需使用单独的 cookie。
    6. 如果要更改会话 cookie 设置,请使用 session_set_cookie_params();例如使其永久化。

    【讨论】:

    • 谢谢,但是在第 6 题中,你能给我一些代码吗,我不知道如何处理那个函数...你能用 PHP 编写示例代码吗?
    • #2。对于永不过期的会话,将带有 user_id 的会话数据存储在数据库中,而不是服务器文件系统中。根据 user_id,您可以从数据库中检索会话数据。
    猜你喜欢
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多