ADC

饼干一致性检查

Cookie 一致性检查会检查用户返回的 cookie,以验证它们是否与您的网站为该用户设置的 cookie 相匹配。如果找到修改过的 cookie,则会在请求转发到 Web 服务器之前将其从请求中删除。您还可以配置 Cookie 一致性检查,通过加密 cookie、代理 cookie 或向 cookie 添加标志来转换它处理的所有服务器 cookie。此检查适用于请求和响应。

攻击者通常会修改 cookie,通过冒充先前经过身份验证的用户来获取敏感私人信息的访问权限,或者造成缓冲区溢出。缓冲区溢出检查可防止试图通过使用长 cookie 造成缓冲区溢出。Cookie 一致性检查侧重于第一种情况。

如果使用向导或 GUI,则在“ 修改 Cookie 一致性检查”对话框的“ 常规”选项卡上,可以启用或禁用以下操作:

  • 阻止
  • 日志
  • 学习
  • 统计信息
  • 转换。如果启用,“转换”操作将修改以下设置中指定的所有 cookie:
    • 加密服务器 Cookie。在将响应转发给客户端之前,请先对您的网络服务器设置的cookie进行加密,但Cookie一致性检查放宽列表中列出的cookie除外。当客户端发送后续请求时,加密的cookie将被解密,解密的cookie在转发到受保护的Web服务器之前会重新插入到请求中。指定以下加密类型之一:
      • 无。请勿加密或解密饼干。默认值。
      • 仅解密。仅解密加密的 cookie。请勿对饼干进行加密。
      • 仅加密会话。仅加密会话 cookie。请勿对永久性cookie进行加密。解密所有加密的 cookie。
      • 全部加密。加密会话和持久性 cookie。解密所有加密的 cookie。 注意:加密 cookie 时,Web App Firewall 会向 cookie 添加 httpOnl y 标志。此标志阻止脚本访问和解析 cookie。因此,该标志可防止基于脚本的病毒或特洛伊木马访问解密的 cookie 并使用该信息破坏安全性。无论要在 Cookie 中添加的标志参数设置如何,都将执行此操作,这些设置独立于加密服务器 Cookie 参数设置进行处理。
  • 代理服务器饼干。代理您的 Web 服务器设置的所有非持久(会话)cookie,但 Cookie 一致性检查放宽列表中列出的任何 Cookie 除外。Cookie 通过使用现有的Web App Firewall 会话 cookie 进行代理。Web App Firewall 会剥离受保护的 Web 服务器设置的会话 cookie 并将其保存在本地,然后再将响应转发到客户端。当客户端发送后续请求时,Web App Firewall 会在请求中重新插入会话 cookie,然后再将其转发到受保护的 Web 服务器。指定以下设置之一:
    • 无。不要代理 cookie。默认值。
    • 仅限会话。仅限代理会话 cookie。请勿代理持久性 cookie 注意:如果您在启用 cookie 代理后将其禁用(在设置为“仅会话”后将此值设置为“无”),则会为在禁用之前建立的会话维护 cookie 代理。因此,您可以在 Web App Firewall 处理用户会话时安全地禁用此功能。
  • 要在 Cookie 中添加的标志。在转换过程中向 cookie 添加标志。指定以下设置之一:
    • 无。不要在 cookie 中添加标志。默认值。
    • 仅限 HTTP。将 httpOnly 标志添加到所有 cookie 中。支持 HttpOnly 标志的浏览器不允许脚本访问设置了此标志的 cookie。
    • Secure(安全)。将安全标志添加到仅通过 SSL 连接发送的 cookie 中。支持安全标志的浏览器不会通过不安全的连接发送标记的cookie。
    • 全部。为所有 cookie 添加 httpOnly 标志,将安全标志添加到仅通过 SSL 连接发送的 cookie 中。

如果您使用命令行界面,则可以输入以下命令来配置 Cookie 一致性检查:

  • set appfw profile <name> -cookieConsistencyAction [**block**] [**learn**] [**log**] [**stats**] [**none**]
  • set appfw profile <name> -cookieTransforms ([**ON**] | [**OFF**])
  • set appfw profile <name> -cookieEncryption ([**none**] | [**decryptOnly**] | [**encryptSession**] | [**encryptAll**])
  • set appfw profile <name> -cookieProxying ([**none**] | [**sessionOnly**])
  • set appfw profile <name> -addCookieFlags ([**none**] | [**httpOnly**] | [**secure**] | [**all**])

要为 Cookie 一致性检查指定放宽,必须使用 GUI。在“修改 Cookie 一致性检查”对话框的“检查”选项卡上,单击“添加”以打开“添加 Cookie 一致性检查放宽”对话框,或选择现有放宽并单击“打开”以打开“修改 Cookie 一致性检查放宽”对话框。这两个对话框都提供了用于配置放宽的相同选项。

以下是 Cookie 一致性检查放宽的示例:

  • 登录字段。以下表达式豁免所有以字符串 logon_ 开头的 cookie 名称,后跟至少两个字符长度且长度不超过 15 个字符的字母或数字字符串:

     ^logon_[0-9A-Za-z]{2,15}$
     <!--NeedCopy-->
    
  • 登录字段(特殊字符)。以下表达式豁免所有以字符串 türkçe-logon_ 开头的 cookie 名称,后跟至少两个字符长度且长度不超过十五个字符的字母或数字字符串:

     ^txC3xBCrkxC3xA7e-logon_[0-9A-Za-z]{2,15}$
     <!--NeedCopy-->
    
  • 任意字符串。允许用户修改包含字符串 sc-item_、用户已添加到购物车的商品的 ID ([0-9a-za-z] +)、第二个下划线 (_),最后是他想要的这些商品数量 ([1-9][0-9]?) 的 cookie:

     ^sc-item_[0-9A-Za-z]+_[1-9][0-9]?$
     <!--NeedCopy-->
    

警告:正则表达式很强大。特别是如果您不太熟悉 PCRE 格式的正则表达式,请仔细检查您编写的任何正则表达式。确保他们准确地定义了要作为例外添加的URL,而不是其他任何内容。粗心地使用通配符,尤其是点星号 (.*) 元字符/通配符组合,可能会产生您不希望或期望的结果,例如阻止访问您不打算阻止的 Web 内容,或允许 Cookie 一致性检查会产生的攻击阻止。

饼干一致性检查