Cookie的最佳实践

时间:2013-08-23 21:34:59

标签: cookies

我一直在考虑将两种方法存储在Cookie中。一种方法是对所有数据使用一个cookie并将其存储为JSON字符串。

另一种方法是为每个数据使用不同的cookie。

我在第一种方法中看到的负面影响是,由于Cookie中有额外的JSON字符,它会在标题中占用更多空间。此外,我将不得不解析和字符串化JSON,这需要一点处理时间。积极的是只使用了一个cookie。我还缺少其他积极因素吗?

我在第二种方法中看到的负面消息是将使用更多的cookie密钥值对。

我将存储大约15-20个cookie。每个cookie的到期日期都是相同的。

根据我的理解,每个域的最大cookie数量约为4000.我们还没有接近这个数字。

我有什么问题可以忽略吗?哪种方法最好?

编辑 - 这些Cookie由JavaScript管理。

3 个答案:

答案 0 :(得分:6)

如果您将任何数据分发给用户(这是cookie所做的事情),您应该对数据进行加密,或者至少对其进行签名。

这是保护数据免遭篡改所必需的。

此时,大小考虑因素已经过时(由于填充),解析JSON的性能开销也是如此(加密会导致更大的开销)。


结论:将您的数据存储为JSON(加密),签名,将其编码为base64,并将其存储在一个cookie中。请记住, 是Cookie的最大大小(而且是4K)。

参考:在众多其他框架和应用程序中,这是what Rails does

答案 1 :(得分:2)

Cookie的最佳做法是尽量减少使用。例如,将cookie使用限制为仅记住会话ID,然后将数据存储在服务器端。

在欧盟,Cookie受法律规定的约束,除了会话ID之外,几乎所有内容都使用Cookie需要明确的客户同意。

答案 2 :(得分:0)

早上好。

我想我了解你。在某个时候,我使用存储为加密的json数据的cookie,但用于内部网或管理帐户。对于商店的用户,我使用了相同的做法。但是,要在商店站点上存储产品,我不使用加密。

重要:有时我在解密数据之前遇到json解码问题。根据您的用途,您可以采用一种系统,该系统存储以; 加密的数据,例如:

  • encrypt_function($ key,“ product:K10072; qtd:1 | product:1042; qtd:1 | product:3790; qtd:1”)用于存储产品;和
  • encrypt_function($ key,“ cad_products:1; mdf_products:2; cad_collabs:0”)存储安全授权。

任何系统都可以被黑客入侵。您需要使用持续的用户数据验证和日志分析来创建应用。是的,这个系统需要快速。