【问题标题】:PHP which variables to save in session - and which not to save [closed]PHP在会话中保存哪些变量-哪些不保存[关闭]
【发布时间】:2013-04-30 09:49:16
【问题描述】:

我正在构建一个简单的 web 应用程序,我想使用会话来保持用户登录。我已经搜索了很长时间,以找出我应该在会话中保存哪些变量以保持用户登录。哪个我不应该保存变量,为什么要这样做.. 我的所有会话都在 memcacheD 中(注意它带有 'D' )..

此外,我一直在寻找一本电子书,以准确告诉我如何基于会话构建安全环境。我一直在观察 Facebook 保存的变量,但我似乎无法弄清楚它们在使用什么for(显然这是他们想要的,否则就不会那么安全了)。

【问题讨论】:

标签: php session memcached


【解决方案1】:

您无法真正知道 Facebook 到底存储了什么。
您只能看到存储在 cookie 中的内容。
在大多数情况下,cookie 只接收会话 ID,并且会话本身存储在服务器上,在您的情况下 - memcached。
您可以在页面请求之间存储您需要的任何内容。登录用户的 ID,可能是一些购物车数据等

【讨论】:

  • 拥有他们的登录数据(电子邮件、密码)的加密值并偶尔检查这些数据会不会太愚蠢?
  • 为什么要将密码传回给客户端?也使用通过 cookie 加密会话数据的方法,但前提是您确定不会传递大量数据,仅传递用户 ID、上次阅读的文章、登录前的页面等
【解决方案2】:

基本上,会话用于存储您的逻辑实体。不要存储大量数据。保留真正重要且可用于检索其他相关信息的数据。例如,您可以在会话中存储 user_id 或 username 并使用它来检索用户相关信息。

如果使用电子商务网站,您可以将购物车相关数据存储在会话中,如 cart_id 等。

不要储存:

您不应存储信用卡号或任何其他付款详情等安全信息。此外,不应在会话中保存用户密码或其他相关凭据。

关于 Facebook,他们基本上使用 oAuth 标准,而这些标准又具有访问用户相关信息的标记化方法。它们是目前非常安全和流行的身份验证模式。

【讨论】:

  • 只保存用户名是否足够安全?我的意思是.. 他们无法在 web 应用程序的活动状态期间操纵会话?
  • 对他们来说意味着用户或黑客是谁?
  • 如果有人破解它,无论如何我注定要失败,但我的意思是用户名是否足够?如果我想从 SQL 中检索数据 - 我可以简单地依靠他们登录时的数据吗?我不必验证他们是否仍然是他们?不需要偶尔比较他们的密码和用户名吗?
  • 不需要。单击登录按钮后,验证详细信息并在成功登录时将 user_id 或用户名存储在会话中。然后在您的网络应用中的后续请求中使用该会话值。
  • 哇.. 我很惊讶它足够安全.. :O - 然而却如此简单:D
猜你喜欢
  • 2021-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多