【问题标题】:what is the best for remembering users? cookies or database or both? [closed]什么是最能记住用户的? cookie 或数据库或两者兼而有之? [关闭]
【发布时间】:2013-07-18 17:38:36
【问题描述】:

我看到很多开源网站,它使用不同的方法来记住他们的登录用户,有些只使用 cookie,有些使用 cookie 和数据库。 每种方法之间有什么区别?什么是最好的使用方法?

我认为有安全原因,谁能帮我理解?

【问题讨论】:

  • 单独使用 cookie 和数据库都不够。 cookie 存储会话 ID,但服务器需要 某种 方式(喘气!某种数据库)将该会话 ID 绑定到会话对象。
  • 即使它在您的国家是合法的,也请不要监视您的用户。使用 cookie 将为他们提供一个选项,他们是否希望通过识别它们来获得您提供的好处,或者宁愿根本不被跟踪。
  • @mikyra 监视用户?你在说什么?
  • @AarolamaBluenk:以违反指令 95/46/EC(参见 en.wikipedia.org/wiki/Data_Protection_Directive)为例。
  • 我想了解的是,我可以通过存储用户信息来使用cookie来记住用户,帮助我识别用户,为什么我需要使用数据库?

标签: php security cookies web


【解决方案1】:

所有“记住我”功能都需要 cookie 或其他方式在用户计算机上留下一些信息,以便您以后识别他/她。然后,您将获取这些信息,这些信息将帮助您识别服务器上的用户,并执行您必须做的任何事情来将他/她重新登录到您的系统中。

【讨论】:

    【解决方案2】:

    要记住用户,在他们的访问中,您必须使用 cookie。数据库无法做到这一点。

    会话变量只持续一个会话。例如如果您使用会话变量,那么您第二天就不会“记住”用户。

    您需要数据库以永久方式存储有关用户的信息。 “记住我”功能不需要它本身。如果例如您只需要知道用户的姓名,不妨将其存储在 cookie 本身中。当用户回来时,名称就在 cookie 中,可以用来说“欢迎 foo”。但是,例如该页面是例如一个电子邮件客户端,那么您不可能将所有用户的电子邮件存储在一个 cookie 中;并不是说无论如何它都有意义。在这种情况下,您将从 cookie 中获取登录凭据,标记用户已登录,然后进入数据库以获取他们的电子邮件。

    【讨论】:

      【解决方案3】:

      Cookie 速度更快,因为它们本地存储在用户的计算机上。

      数据库要求您在服务器上建立连接以获取数据。

      您应该查看this question 以获得更全面的指南。

      【讨论】:

      • 查看我对这个问题的评论。这个答案具有误导性且过于简单化。
      【解决方案4】:

      Cookies 不会更新,否则 Sessions 会更新,所以我认为记住用户的最佳方式是通过 Session id 和数据库

      【讨论】:

      • Cookie 可以根据您的需要频繁更新。如果你说的是 cookie 的过期时间,那么是的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 2016-01-31
      • 2011-06-17
      • 2015-10-14
      • 2017-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多