代码之家  ›  专栏  ›  技术社区  ›  user372551

将用户数据存储在数据库中比存储在cookies中更好吗[[关闭]

  •  5
  • user372551  · 技术社区  · 15 年前

    为什么我们不把网站访问者(订户)的cookie信息保存在数据库中,而不是在用户的机器上设置一个文件呢。是的,我知道我听起来很傻,原因如下:

    1. 为每一个用户维护一小块数据的数据库信息是很困难的。

    2. 当数据库服务器关闭时,可能很难检索数据。

    3. 对于每一条小信息,都要向web服务器发出连续的请求。

    我的观点是,如果我们要将用户数据存储在数据库中而不是客户端计算机上的文件中,我们可以通过不允许其他组织或其他站点(甚至黑客)从cookies访问用户信息来为客户端提供安全性。

    此外,我们还可以跟踪用户的活动或行为(我的意思是,我们实际上不知道用户在做什么(客户端活动),比如数据篡改。)

    如果您觉得连续地向web服务器发送请求可能很困难,那么由于Ajax,情况并非如此。这对我的立场提供了一些支持:将请求发送到一个使用Ajax非常简单的web服务器。

    那么,将用户敏感信息存储在数据库中,而不是在用户机器上设置一个小文件,这是一个好主意吗?

    具体地说,我不是在谈论会话!

    6 回复  |  直到 7 年前
        1
  •  6
  •   advait    15 年前

    如何在不要求用户名/密码的情况下识别用户A和用户B?Cookie提供了一种简单的方法来实现这种差异化。一旦用户被识别,你的观点就完全有效了。

    一般来说,敏感信息不应该存储在cookies中。此类信息最好存储在服务器端(如您所示)。

        2
  •  3
  •   TRiG    15 年前

    在客户机上,您需要的是一个小cookie,其中包含一些对这些敏感数据的模糊、难以猜测的引用。

    祝贺 你!你刚刚重新设计了会话!

    (如果您愿意,可以将Web服务器设置为将会话数据存储在数据库中,而不是服务器上的平面文件中。)

        3
  •  2
  •   CodeOwl    12 年前

    确实,传统的做法是避免对敏感数据使用cookies,因为cookies存储在客户端,黑客可以对其进行修补并可能造成损害。然而,有一个令人信服的理由,为什么cookies值得再看一眼:可伸缩性。很难为任意数量的云服务器提供高性能的会话数据池:

    http://aws.typepad.com/aws/2012/04/scalable-session-handling-in-php-using-amazon-dynamodb.html

    http://www.cse.msu.edu/~alexliu/publications/Cookie/cookie.pdf

    所以可能旧的东西又是新的。

        4
  •  1
  •   hollsk    15 年前

    通常我们使用cookies,因为我们不必在cookies中设置任何敏感数据。如果您的应用程序确实有敏感数据,您不希望任何人摆弄这些数据,那么一定要使用您可以使用的所有服务器端和数据库工具来解决这个问题,但并不是所有的应用程序和实现都需要这些方面的安全级别。设置cookies是为了方便,仅此而已。

        5
  •  1
  •   Chuck Callebs    14 年前

    你还提到会话-会话

        6
  •  0
  •   dotnetnoob    13 年前

    我是在寻找与cookie vs database参数相关的类似建议时看到这篇文章的。

    比如说,我有一些整数列表形式的用户数据,即一些带书签的产品,每个用户最多80个。

    在数据库中,这可以转换为4个表(每个数据类型1个表),因此每个用户有20行。

    有人对此有什么看法吗,我很感激你的建议。

    推荐文章