Citrix ADC

Cookie一致性检查

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

攻击者通常会修改cookie,伪装成先前经过身份验证的用户,从而获得对敏感隐私信息的访问权,或者导致缓冲区溢出。缓冲区溢出检查防止使用长cookie导致缓冲区溢出的尝试。Cookie一致性检查主要针对第一个场景。

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

  • 日志
  • 学习
  • 统计数据
  • 变换。如果启用,Transform操作将按照以下设置修改所有cookie:
    • 加密服务器cookie。在将响应转发给客户端之前,加密web服务器设置的Cookie (Cookie一致性检查放松列表中列出的除外)。当客户端发送后续请求时,加密的cookie将被解密,并在请求转发到受保护的web服务器之前重新插入解密的cookie。指定以下加密类型之一:
      • 一个也没有。不要加密或解密cookies。默认值。
      • 解密。只解密加密的cookie。不要加密cookie。
      • 只加密会话。只加密会话cookie。不要加密持久cookie。解密任何加密的cookie。
      • 加密所有。加密会话cookie和持久cookie。解密任何加密的cookie。请注意:当加密cookie时,Web应用程序防火墙添加HttpOnly标记到cookie。此标志阻止脚本访问和解析cookie。因此,该标志可以防止基于脚本的病毒或木马访问解密的cookie并利用该信息破坏安全性。这与Cookies参数设置中的“要添加的标志”无关,该参数是独立于加密服务器Cookies参数设置处理的。
  • 代理服务器cookie。代理您的web服务器设置的所有非持久性(会话)Cookie, Cookie一致性检查放松列表中列出的除外。cookie通过使用现有的Web App Firewall会话cookie进行代理。Web App Firewall在将响应转发给客户端之前,会将受保护的Web服务器设置的会话cookie删除并保存在本地。当客户端发送后续请求时,Web应用防火墙在转发请求到受保护的Web服务器之前,将会话cookie重新插入到请求中。指定以下设置之一:
    • 一个也没有。不要代理cookie。默认值。
    • 会话。仅代理会话cookie。注意:如果在启用cookie代理后禁用cookie代理(设置为“Session only”后设置为“None”),则在禁用之前建立的会话将保持cookie代理。因此,在Web App Firewall处理用户会话时,可以安全地禁用此功能。
  • 要在cookie中添加的标志.在转换过程中向cookie添加标志。指定以下设置之一:
    • 一个也没有。不要在cookie中添加标志。默认值。
    • HTTP。将HttpOnly标志添加到所有cookie中。支持HttpOnly标志的浏览器不允许脚本访问设置了这个标志的cookie。
    • 安全.将安全标志添加到仅通过SSL连接发送的cookie中。支持Secure标志的浏览器不会通过不安全的连接发送标记的cookie。
    • 所有人。将HttpOnly标志添加到所有cookie中,并将Secure标志添加到仅通过SSL连接发送的cookie中。

如果使用命令行方式,可以输入以下命令配置Cookie一致性检查:

  • 设置appfw概要文件<名称> -cookieConsistencyAction[* *屏蔽* *][* *学习* *][* *记录* *][* *数据* *][* *不* *]
  • 设置appfw profile -cookieTransforms ([**ON**] | [**OFF**])
  • set appfw profile -cookieEncryption ([**none**] | [**decryptOnly**] | [**encryptSession**] | [**encryptAll**])
  • set appfw profile -cookieProxying ([**none**] | [**sessionOnly**])
  • 设置appfw概要文件<名称> -addCookieFlags((* *不* *)| (* * httpOnly * *) |(* *保护* *)|(所有* * * *)

要为Cookie一致性检查指定松弛,必须使用GUI。2 .在“修改Cookie一致性检查”对话框的“检查”页签中,单击“添加”,打开“添加Cookie一致性检查放松”对话框,或选择已存在的放松项,单击“打开”,打开“修改Cookie一致性检查放松”对话框。两个对话框都提供了配置松弛的相同选项。

以下是Cookie一致性检查松弛的示例:

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

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

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

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

注意:正则表达式非常强大。特别是如果您不完全熟悉pcre格式的正则表达式,请仔细检查您编写的任何正则表达式。确保它们定义了您想要添加的URL作为异常,而不是其他的。不小心使用通配符,特别是使用点-星号(.*)元字符/通配符组合,可能会产生您不希望或预期的结果,例如阻止访问您不打算阻止的web内容,或允许Cookie一致性检查本应阻止的攻击。

重要的

在版本10.5中。E(在59.13xx之前的一些临时增强版本中。在11.0版本中(在65.x之前的版本中),Web应用防火墙对Cookie头的处理发生了改变。在这些版本中,每个cookie都是单独计算的,如果cookie头中接收到的任何一个cookie的长度超过了配置的BufferOverflowMaxCookieLength,就会触发缓冲区溢出违规。这一更改的结果是,在10.5和更早版本构建中被阻止的请求可能会被允许,因为在确定cookie长度时没有计算整个cookie头的长度。在某些情况下,转发到服务器的cookie总大小可能大于接受的值,服务器可能会响应“400坏请求”。

请注意这种变化已经恢复了。10.5中的行为。e - > 59.13 xx。E和后续10.5。E增强构建以及11.0发行版65。X和后续构建现在与发行版10.5的非增强构建类似。现在在计算Cookie的长度时考虑整个原始Cookie头。周围的空格和分隔名称-值对的分号(;)字符也包括在确定cookie长度中

请注意

无会话Cookie一致性:在11.0版本中,cookie一致性行为发生了改变。在早期版本中,cookie一致性检查调用会话。cookie存储在会话中并被签名。在将暂态cookie转发到客户端之前,会在暂态cookie后添加一个“wlt_”后缀,在持久cookie后添加一个“wlf_”后缀。即使客户端没有返回这些签名的wlf/wlt cookie, Web应用防火墙也会使用存储在会话中的cookie执行cookie一致性检查。

在11.0版本中,cookie一致性检查是无会话的。Web应用程序防火墙现在添加一个cookie,它是Web应用程序防火墙跟踪的所有cookie的散列。如果这个散列cookie或任何其他被跟踪的cookie丢失或被篡改,Web应用程序防火墙在将请求转发到后端服务器之前将cookie删除,并触发cookie一致性违反。服务器将该请求视为一个新请求,并发送新的Set-Cookie报头。Citrix ADC版本13.0、12.1和NetScaler 12.0和11.1中的Cookie一致性检查没有无会话选项。

Cookie一致性检查