【问题标题】:Storing session for use in members area存储会话以供会员区使用
【发布时间】:2011-10-20 19:11:33
【问题描述】:

我已经为我的会员区创建了一个注册/登录系统。用户登录后,我想存储一个会话变量,我可以使用该变量从数据库中检索与用户关联的数据。

我应该以任何方式加密变量吗?我想要作为变量的数据要么是用户名,要么是 id,哪个最好?

是否应该以任何方式以及何时重新生成会话 ID?

【问题讨论】:

  • 会话数据保存在服务器上,除非您为其提供接口,否则用户永远无法看到或访问它。默认情况下,唯一存储在客户端中的是 cookie 中的会话 ID 字符串。

标签: php session login


【解决方案1】:

会话中的数据存储被认为是“安全的”,因此您不需要对其进行加密解密。

【讨论】:

    【解决方案2】:

    您应该在成功登录/注销后重新生成会话 ID。出于安全原因,如果用户想要执行关键操作(例如更改重要数据、删除帐户或提交订单),我建议向用户询问密码。

    正如 AurimasL 所说,您不必担心服务器端的会话数据。如果您在共享主机上,我建议您阅读此书,因为有一些安全方面:http://phpsec.org/projects/guide/5.html

    【讨论】:

      【解决方案3】:

      会话 ID 像 cookie 一样存储在客户端机器上,并针对每个请求传回服务器。这就是 PHP 在收到请求后确定将哪些信息加载到会话中的方式。

      由于会话存在于服务器上而不是客户端上,您只需要担心session hijacking 存储在其中的信息是否安全。您的问题的答案是否定的,我不会尝试加密存储在会话中的信息。

      【讨论】:

        【解决方案4】:

        只需在下面的 cmets 中添加一个,

        请记住,创建会话对于您的服务器应用来说代价高昂。有时将 id 存储在会话中并将其他信息存储在 cookie 中(不需要安全性作为用户名的信息)是一个好主意。

        【讨论】:

        • 可以通过实现缓存层(例如 memcached 或 tokyo tyrant)以及在其中存储会话数据来规避在 MySQL 等持久存储中存储数据的成本。
        猜你喜欢
        • 2011-03-01
        • 2017-12-19
        • 2015-03-12
        • 2014-10-06
        • 1970-01-01
        • 2014-01-29
        • 1970-01-01
        • 2020-11-10
        • 1970-01-01
        相关资源
        最近更新 更多