Cookies 如何隐藏放在cookie中以供检索的信息?

Cookies 如何隐藏放在cookie中以供检索的信息?,cookies,e-commerce,sessionid,Cookies,E Commerce,Sessionid,我的问题与服务器端的信息有关,这些信息需要放在客户端进行检索,但更具体地说,对于购物车来说。我学会了用纯文本来做,但我不知道如何隐藏数据库中的内容。我做了一些研究,我发现有两种选择 散列cookie中的任何内容,并在数据库中保留散列版本以进行比较 对它进行加密、签名,如果它被篡改,它将由于缺少签名而被忽略。(不太确定如何进行自己的加密) 这两种方法是大多数电子商务网站使用的方法还是我应该使用的方法,还是有一种更广泛使用的方法?不要在cookie中放入任何您不想由用户控制的内容。cookie由用户

我的问题与服务器端的信息有关,这些信息需要放在客户端进行检索,但更具体地说,对于购物车来说。我学会了用纯文本来做,但我不知道如何隐藏数据库中的内容。我做了一些研究,我发现有两种选择

  • 散列cookie中的任何内容,并在数据库中保留散列版本以进行比较
  • 对它进行加密、签名,如果它被篡改,它将由于缺少签名而被忽略。(不太确定如何进行自己的加密)

  • 这两种方法是大多数电子商务网站使用的方法还是我应该使用的方法,还是有一种更广泛使用的方法?

    不要在cookie中放入任何您不想由用户控制的内容。cookie由用户控制。基本上,根本不信任cookie。如果您的设计迫使您信任cookie,请更改它。

    我没有电子商务网站,但以下是一些有用的提示:

  • 切勿在cookie中存储任何可能会危及网站完整性/安全性的内容
  • 只存储除您之外对其他人完全无用的信息
  • 想出一种方法来“伪装”cookie中的数据
  • 这里有一个简单的例子:假设您需要将用户名存储在cookie中。首先,不要存储名称,因为这违反了第一条提示。相反,创建一个用户id。仅仅创建一个用户id是不够的,因为这个数字仍然是一个重要的信息。为了使这些数据对其他人完全无用,请对其进行伪装。我的意思是:假设你的用户id是1234。与其存储1234,不如对其执行某种数学运算,然后将其存储。为简单起见,假设您将数字平方。现在用户id是1522756,这可能比您的实际用户id允许的数字还要多,因此数据对除您之外的任何人都是完全无用的。为了使数据再次有用,只需取数字的平方根即可。对于真实场景,您可能希望执行更复杂的函数,只需确保您执行的任何操作都可以反转以给出原始数字


    检查以确保cookie未被篡改也是一个好主意。

    您试图在cookie中输入哪些信息?您使用的是什么服务器端语言和数据库?好吧,我肯定已经学会了从不放置敏感数据,因此我决定采用这种方法。我只需要输入用户名和产品信息,以便跟踪用户在其购物车中的内容。对不起,我应该使用MYSQL指定在LAMP堆栈上运行的规范PHP。很好,但您建议的是我列出的两种方法,当然略有不同。我可以创建自己的加密,但使用MD5会不会不好?还有,我要检查一下饼干是否被篡改了?谢谢。MD5应该足够了;但是,这取决于正在散列的数据。如果有人可以访问散列,它可以被破译,这取决于原始数据是什么。如果你有兴趣,可以看看彩虹表。检查篡改要困难得多。一个简单的方法是使数据的第一个或最后一个字符始终相同。然后你的程序可以检查这个标志是否在那里,把它看成一个“奇偶校验位”。您可以将其与检查器相结合,以确认字符数是否正确。这不是傻瓜式的,但应该足够了。是的,我很害怕。谢谢你的意见。非常感谢。检查篡改是微不足道的。只需在数据的末尾附加数据的MD5散列,该散列与一个只有您知道的秘密连接在一起。那么唯一可能的篡改就是重新使用旧的cookie。我想我在SessionIp上读到了一些东西。至少在另一台计算机上使用cookie时,这是否可以增加一点安全性?如果您知道,我如何访问php中的SessionIp?