Citrix ADC

流式处理请求支持

思杰Web应用防火墙支持请求端流式传输,以显著提升性能。设备不会缓冲请求,而是检查传入流量是否存在安全违规(如SQL,跨站点脚本,字段一致性和字段格式)。设备完成字段的数据处理后,请求将转发到后端服务器,同时设备继续评估其他字段。这种数据处理显著提高了处理时间在处理表单有许多字段。

注意: Citrix Web应用防火墙支持最大20 MB的帖子大小,而无需流式处理。为了更好地利用资源,Citrix建议您仅为大于20 MB的有效负载启用流式处理。此外,如果启用了流,后端服务器必须接受分块请求。

虽然流式处理过程对用户是透明的,但由于以下更改,需要进行小的配置调整:

正则表达式模式匹配:对于连续字符串匹配,正则表达式模式匹配现在限制为4k。

字段名称匹配:Web应用防火墙学习引擎只能区分名称的前128个字节。如果表单中有多个字段的名称与前 128 个字节匹配相同的字符串,则学习引擎不会区分它们。同样,部署的放宽规则可能会无意中放宽所有这些字段。

在规范化期间,删除空格,百分比解码,Unicode解码和字符集转换,以提供安全检查检查。128字节限制适用于utf-8字符格式的字段名称的规范化表示。ASCII字符的长度为1个字节,但是某些国际语言中字符的utf - 8表示形式可能从1个字节到4个字节不等。如果名称中的每个字符都需要4个字节才能转换为utf - 8格式,则该名称中的前32个字符可能会被学习的规则区分。

字段一致性检查:启用字段一致性时,会话中的所有窗体都基于Web应用防火墙插入的“as_fid”标记存储,而不考虑“action_url”。

  • 表单字段一致性的强制表单标记:启用字段一致性检查时,还必须启用表单标记。如果表单标记已关闭,则字段一致性保护可能不起作用。
  • 无会话表单域一致性:当启用无会话字段一致性参数时,Web应用程序防火墙将不再执行表单的“获取”到“POST”转换。表单标记也是无会话字段一致性所必需的。
  • 篡改as_fid:如果在篡改as_fid后提交表单,即使没有任何字段被篡改,也会触发字段一致性冲突。在非流式请求中,允许这样做,因为可以使用存储在会话中的" action_url "来验证表单。

签名:签名现在具有以下规格:

  • 位置:现在必须为每种模式指定位置。规则中的所有模式都必须有一个<地址>标签。

  • 快速匹配:所有签名规则都必须具有快速匹配模式。如果没有快速匹配模式,则尝试选择一个模式(如果可能)。快速匹配是一个文字字符串,但如果它们包含PCRE可用的文字字符串,则可用于快速匹配。

  • 弃用位置:签名规则不再支持以下位置。

    • HTTP_ANY
    • HTTP_RAW_COOKIE
    • HTTP_RAW_HEADER
    • HTTP_RAW_RESP_HEADER
    • HTTP_RAW_SET_COOKIE

跨站点脚本/SQL转换:原始数据用于转换,因为SQL特殊字符如单引号(')、反斜杠()和分号(,))以及跨站点脚本标记是相同的,不需要数据的规范化。为了转换操作,将评估HTML实体编码,百分比编码或ASCII等特殊字符的表示形式。

Web应用防火墙不再检查跨站点脚本转换操作的属性名称和值。现在只有跨站点脚本属性名称才会在使用流媒体传输时进行转换。

处理跨站点脚本标签:作为NetScaler 10.5。E版本及更高版本中流式更改的一部分,跨站点脚本标签的处理发生了变化。在早期版本中,开括号(<),或右括号(>)或同时包括号和右括号(< >)的存在被标记为跨站点脚本违规。该行为在10.5。E构建中发生了变化。仅存在开括号字符 (<) 或只存在近括号字符 (>) 不再被视为攻击。这是当打开括号字符(<)是紧随其后的是一个右括号字符(>)时,跨站点脚本攻击被标记。两个角色必须以正确的顺序(<后面跟着>)存在才能触发跨站点脚本违规。

注意SQL违规日志中的更改消息:作为10.5。E版本中流式更改的一部分,我们现在以块形式处理输入数据。RegEx模式匹配现在限制为4K以进行连续字符串匹配。通过此更改,sql冲突日志消息可能包含与早期版本相比不同的信息。输入中的关键字和特殊字符以多个字节分隔。设备在处理数据时具有SQL关键字和特殊字符串的跟踪,而不是缓冲整个输入值。除了字段名称之外,日志消息还包括SQL关键字,SQL特殊字符或SQL关键字和SQL特殊字符。输入的其余部分不再包含在日志消息中,如以下示例所示:

示例:

在10.5中,Web应用程序防火墙检测到SQL冲突时,整个输入字符串可能包含在以下日志消息中:

SQL关键字检查失败的字段文本= "从testbed1中选择一个名称;\(;\)" .*<阻止>

在11.0中,我们只记录以下日志消息中的字段名称,关键字和特殊字符(如果适用)。

字段文本= "选择(,)"< >阻塞的SQL关键字检查失败此更改适用于包含应用程序/ x-www-form-urlencoded多部分/格式文本/ x-gwt-rpc内容类型的请求。在处理JSONXML有效负载期间生成的日志消息在此更改中不会受到影响。

原始帖子主体:安全检查检查始终在raw post主体上进行。

表单id: Web应用防火墙插入的“as_fid”标记,该标记是表单的计算哈希值对用户会话更为唯一。无论用户或会话如何,它都是特定表单的相同值。

字符集:如果请求没有字符集,则在处理请求时使用应用程序配置文件中指定的默认字符集。

计数器:

添加带有前缀" se "和" appfreq "的计数器以跟踪流媒体引擎和流媒体引擎请求计数器。

Nsconsmg -d statswt0 -g se_err_

Nsconsmg -d statswt0 -g se_to_

Nsconsmg -d statswt0 -g se_cur_

Nsconsmg -d statswt0 -g appfreq_err_

Nsconsmg -d statswt0 -g appfreq_tot_

Nsconsmg -d statswt0 -g appfreq_cur_

_err计数器:指示必须成功但由于内存分配问题或其他资源紧缩而失败的罕见事件。

_tot计数器:不断增加的柜台。

_cur计数器:计数器,指示根据当前事务的使用情况不断变化的当前值。

提示:

  • Web应用防火墙安全检查必须与以前一样工作。
  • 安全检查的处理没有设置顺序。
  • 响应端处理不受影响,并保持不变。
  • 如果使用无客户端vpn,则不参与直播。

重要:

计算Cookie长度:在10.5。E版本中,除了11.0版本(在65.;x之前的版本中),Web应用程序防火墙处理Cookie标头的方式也发生了更改。设备单独评估饼干,如果饼标头中的饼干长度超过了配置的长度,则会触发缓冲区溢出违规。因此,可能允许在NetScaler 10.5版本或更早版本中阻止的请求。整个cookie头的长度不计算用于确定cookie的长度。在某些情况下,Cookie的总大小可能大于可接受的值,并且服务器可能会响应“400错误请求”。

注 意:更改已恢复。NetScaler版本10.5。E到版本59.13xx。E及其后续版本中的行为与版本10.5的非增强版本类似。现在在计算Cookie的长度时考虑整个原始Cookie标头。在确定cookie长度时,还包括周围空格和分号(;)字符分隔名称-值对。

流式处理请求支持