【问题标题】:Will mod_gzip compress the cookiesmod_gzip 会压缩 cookie
【发布时间】:2010-11-25 18:26:34
【问题描述】:

我有一个 php web 应用程序,它使用大 cookie 来存储大量用户数据。如果我在 apache 服务器上设置 mod_gzip,它会只压缩页面内容还是也会压缩 cookie?

【问题讨论】:

    标签: php apache cookies


    【解决方案1】:

    不,它只压缩内容。 Cookie 在标头中发送,从不压缩。

    【讨论】:

      【解决方案2】:

      使用 mod_gzip 不会对 cookie 进行压缩,但如果您知道 cookie 数据会很大,您可以随时自行压缩 cookie 数据。创建 cookie 时压缩数据,读取 cookie 时解压缩。请务必在解压缩之前验证数据的签名,以帮助避免针对您的代码的 DoS 攻击。

      【讨论】:

      • 除此之外,将敏感信息存储在 Cookie 中绝不是绝对安全的。
      • PHP 已经拥有压缩函数,如gzencode(HTTP 的deflate 文件格式)、gzcompress(HTTP 的gzip 文件格式)和gzdeflate(实际的DEFLATE 数据格式)。所以我怀疑你是否还需要一个签名来保护自己免受拒绝服务攻击。
      • 压缩 cookie 可能不会在网络上保存任何字节,甚至会产生更多流量。请记住,cookie 是 URL 编码的,因此每个不是字母数字的字符都将占用 3 倍的空间,并使任何通过压缩所做的节省无效。例如,urlencode(gzcompress("this is a text", 9)) 将返回一个 54 字符的字符串,是原始“未压缩”大小的 3.5 倍。
      • @Josh Davis:好点子,如果压缩对 cookie 数据确实有效,那么对结果进行 base64 编码以避免 url 编码是值得的。但这确实需要衡量。
      【解决方案3】:

      我认为您在这里关注的是错误的问题。

      此时您觉得压缩 cookie 可能是个好主意,您显然是在滥用 cookie 系统。

      在 cookie 中存储最少的数据,例如登录上下文的唯一 ID 或诸如此类,不要将整个用户数据存储在 cookie 中。

      基本上我的意思是,您永远不会觉得需要压缩 cookie。如果你这样做了,你就做错了。

      不,要回答您的问题,它不会压缩 cookie。它们与内容分开发送。

      【讨论】:

      • 非常好。 cookie 应该是保存在您服务器上的用户数据的密钥/标识符。
      • 好建议,但并非总是如此。我认为这有点笼统。我们当前的系统将 cookie 用于几件事,它们确实接近 4k 限制(总计)。 WIF 用于验证的 FedAuth cookie 非常大。 WIF 是否在滥用 cookie 系统?没有不尊重的意思:)
      猜你喜欢
      • 2010-12-29
      • 2010-09-08
      • 2013-01-18
      • 1970-01-01
      • 2018-08-06
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      相关资源
      最近更新 更多