ADC

字段格式检查

字段格式检查将验证用户以 Web 表单形式发送到您的网站的数据。它检查数据的长度和类型,以确保它适用于显示数据的表单字段。如果 Web App Firewall 在用户请求中检测到不适当的 Web 表单数据,则会阻止请求。

通过防止攻击者向您的网站发送不适当的 Web 表单数据,字段格式检查可防止对您的网站和数据库服务器进行某些类型的攻击。例如,如果某个特定字段希望用户输入电话号码,则“字段格式”检查将检查用户提交的输入,以确保数据与电话号码的格式相匹配。如果特定字段需要名字,则“字段格式”检查可确保该字段中的数据的类型和长度与名字相适应。它对配置为保护的每个表单字段执行相同的操作。

此检查仅适用于 HTML 请求。它不适用于 XML 请求。您可以在 HTML 配置文件或 Web 2.0 配置文件中配置字段格式检查,以检查 HTML 有效负载以保护您的应用程序。Web App Firewall 还支持 Google Web 工具包 (GWT) 应用程序的字段格式检查保护。

“字段格式”检查要求您启用一个或多个操作。Web App Firewall 检查提交的输入并应用指定的操作。

注意

字段格式规则是收紧规则。将它们从学习的数据添加到放宽列表中作为阻止规则。

要放宽字段格式规则,请从 fieldformat 放宽列表中删除特定的“fieldName”。

您可以选择设置默认字段格式,以指定要保护的每个 Web 表单上每个表单字段中的“字段类型”以及预期数据的最小和最大长度。您可以部署放宽规则,为特定表单的单个字段配置字段格式。可以添加多个规则来指定字段名称、操作 URL 和字段格式。指定字段格式以接受不同表单字段中的不同类型的输入。学习功能可以为放宽规则提供建议。

字段格式化操作— 您可以启用“阻止”、“日志”、“统计”和“学习”操作。必须至少启用其中一个操作才能使用“字段格式检查”保护。

  • 阻止。如果启用阻止,则如果输入不符合指定的字段格式,则会触发阻止操作。如果为目标字段配置了规则,则会根据指定的规则检查输入。否则,将根据默认字段格式规范对其进行检查。字段类型或最小/最大长度规范中的任何不匹配都会导致请求被阻止。
  • 日志。如果启用日志功能,则“字段格式”校验会生成日志消息,指示其执行的操作。您可以监视日志以确定对合法请求的响应是否被阻止。日志消息数量的大幅增加可能表明恶意尝试发起攻击。
  • 统计数据。如果启用,统计功能将收集有关冲突和日志的统计信息。统计数据计数器中的意外激增可能表明您的应用程序受到攻击,或者您可能必须重新访问配置以查看指定的字段格式是否过于限制。
  • 学习。如果您不确定哪些字段类型或最小长度和最大长度值可能最适合您的应用程序,则可以使用学习功能根据学习的数据生成建议。Web App Firewall 学习引擎监视流量,并根据观测值提供字段格式建议。为了在不影响性能的情况下获得最佳优势,您可能需要在短时间内启用学习选项,以获取具有代表性的规则示例,然后部署规则并禁用学习。 注意:Web App Firewall 的学习引擎只能区分名称的前 128 个字节。如果表单具有多个字段,名称与前 128 个字节匹配,则学习引擎可能无法区分它们。同样,部署的放宽规则可能会无意中放宽所有这些字段。

默认字段格式— 除了配置操作之外,您还可以配置默认字段格式以指定应用程序所有表单字段中预期的数据类型。字段类型可以选择作为字段格式类型。最小长度和最大长度参数可用于指定允许输入的长度。作为“字段类型”的替代方法,您可以使用“字符映射”指定字段中允许的内容(群集部署中除外)。

  • 字段类型— 字段类型是指定为其分配优先级值的命名表达式。字段类型表达式指定允许的输入,并与提交的数据进行匹配,以确定接收的值是否与允许的值一致。“字段类型”按其优先级编号的顺序进行检查。数字越低表示优先级越高。通过 Web App Firewall,您可以选择添加自己的字段类型,并为其分配所需的优先级。优先级值可以介于 0 到 64000 之间。提供以下内置字段类型以帮助简化配置过程:

     > sh appfw fieldtype
     1)      Name:  integer           Regex:  "^[+-]?[0-9]+$"
                     Priority:  30            Comment:  Integer
                     Builtin:  IMMUTABLE
     2)      Name:  alpha             Regex:  "^[a-zA-Z]+$"
                     Priority:  40            Comment:  "Alpha characters"
                  Builtin:  IMMUTABLE
     3)      Name:  alphanum          Regex:  "^[a-zA-Z0-9]+$"
                     Priority:  50            Comment:  "Alpha-numeric characters"
                     Builtin:  IMMUTABLE
     4)      Name:  nohtml            Regex:  "^[^&<>]\*$"
                     Priority:  60            Comment:  "Not HTML"
                     Builtin:  IMMUTABLE
     5)      Name:  any               Regex:  "^.\*$"
                  Priority:  70            Comment:  Anything
                     Builtin:  IMMUTABLE
         Done
     >
     <!--NeedCopy-->
    

    注意: 内置字段类型是不可变的。它们不能被修改或删除。您添加的任何字段类型都是可修改的。您可以编辑或删除它们。

    如果 PCRE 表达式可以识别应用程序的所有或大多数表单字段中的有效输入并排除无效输入,则将字段类型配置为默认字段格式可能非常有用。例如,如果申请表单中的所有输入都只包含数字和字母,则可能希望使用内置的“字段类型”字母作为默认字段类型。任何非字母数字字符,如反斜杠 () 或分号;在输入中将触发冲突。您还可以添加自己的自定义字段类型,并使用它们配置默认字段格式。例如,如果要将小写 “x”、“y” 和 “z” 设置为唯一允许的字母字符,则可以使用正则表达式 “^[x-z]+$” 配置自定义字段类型。您可以为其分配更高的优先级(优先级较低的数字),然后再为内置的字段类型分配给它,并将其用作默认字段

  • 最小长度 — 分配给 Web 表单中没有显式设置的表单字段的默认最小数据长度。默认情况下,此参数设置为 0,允许用户将字段留空。任何更高的设置都会强制用户填写字段。

    警告:如果最小长度值为 0,但“字段类型”为整数、alpha 或字母,如果任何输入字段留空,则请求将被阻止,尽管设置了最小长度。这是因为这些字段类型的 regEx 包含一个 + 字符,这意味着一个或多个字符。区分整数与 Alpha 字符至少需要一个字符。

  • 最大长度— 分配给 Web 表单中没有显式设置的表单字段的默认最大数据长度。默认情况下,此参数设置为 65535。

    注意: 字符与字节。字段格式的最小长度和最大长度表示字节数,而不是字符数。具有大于一字节字符表示形式的语言可能会导致超出限制的字符少于为最大值配置的数字。例如,对于双字节字符表示,最大值 9 不允许超过 4 个字符。 提示: 图形用户界面允许您将 UTF-8 字符直接剪切并粘贴到图形用户界面中,而无需将其转换为十六进制。

  • 字符映射:除了推荐字段类型外,Web App Firewall 学习引擎还为您提供了一个额外的选项,即“使用字符映射”来部署“格式检查”规则。字符映射表是一组特定表单字段中允许的所有字符。您可以通过使用字符映射对字段格式规范进行微调,以允许或禁止特定字符。为每个表单字段生成一个单独的字符映射。字符映射中字母和数字字符的处理方式不同。如果在输入中看到任何字母字符,则字符映射中推荐的 PCRE 表达式将允许使用所有字母字符 [A-za-Z] 。同样,如果包括任何数字,则允许所有 [0-9] 数字。不可打印的字符是通过使用 x 构造来指定的。字符映射建议仅考虑值介于 0-255 之间的单个字节字符。

    字符映射可以比相应的字段类型建议更具体。在某些情况下,“字符映射”可能是一个更好的选择,因为它们可以让您更严格地控制允许作为输入的字符集。已部署的字符映射将显示为以前缀“CM”开头的字符串,后跟数字。字符映射的优先级从 10000 开始。与用户添加的字段类型一样,您可以添加、编辑或删除字符映射表。无法修改或删除当前在已部署规则中使用的字符映射。

    注意:群集部署中不支持字符映射。

注意

当您添加具有任何内置字段类型的字段格式规则并使用字符映射而不是“字段类型”并将其保存时,更改不会被保存,并且规则仍会显示为“字段类型”。

当字符映射与其中一个内置类型匹配时,将重复使用字段类型,而不是创建新的字符映射表。

使用命令行配置字段格式检查

在命令行界面中,您可以使用 add appfw fieldtype 命令添加新的字段类型。您可以使用设置 appfw 配置文件命令或添加 appfw 配置文件命令来配置字段格式检查并指定要执行的操作。您可以使用未设置 appfw 配置文件命令将配置的设置恢复到默认值。要指定字段格式规则,请使用绑定 appfw 命令将字段类型绑定到表单字段和操作 URL 以及最小和最大长度规范。

要使用命令行添加、删除或查看字段类型

使用 add 命令添加字段类型。添加新字段类型时,必须指定名称、正则表达式和优先级。您还可以选择添加注释。您可以使用 show 命令显示配置的字段类型。您也可以使用 remove 命令删除字段类型,该命令仅需要字段类型的名称。

add [appfw] fieldType <name> <regex> <priority> [-comment <string>]

其中:

<regex> 是一个正则表达式

<priority> 是一个正整数

示例:

add fieldtype "Cust_Zipcode" "^[0-9]{5}[-][0-9]{4}$" 4

-  show [appfw] fieldType [<name>]

    Example: sh fieldtype

    sh appfw fieldtype

    sh appfw fieldtype cust_zipcode

-  `rm [appfw] fieldType <name>`

    Example: rm fieldtype cusT_ziPcode

    `rm appfw fieldtype cusT_ziPcode`
<!--NeedCopy-->

注意: 如上所示,在命令中使用“appfw”是可选的。例如,Add FieldType 或 Add appfw fieldType 都是有效的选项。由于规范化,字段类型的名称不区分大小写。如上例所示,Cust_Zipcode、cust_zipcode 和 cUsT_ziPcode 引用相同的字段类型。

使用命令行配置字段格式检查

使用设置 appfw 配置文件命令或添加 appfw 配置文件命令,如下所示:

  • set appfw profile <name> -fieldFormatAction (([block] [learn] [log] [stats]) | [none])
  • set appfw profile <name>-defaultFieldFormatType <string>
  • set appfw profile <name> -defaultFieldFormatMinLength <integer>
  • set appfw profile <name> -defaultFieldFormatMaxLength <integer>

使用命令行配置字段格式放宽规则

bind appfw profile <name> (-fieldFormat <string> <formActionURL>  <fieldType>
[-fieldFormatMinLength <positive_integer>]  [-fieldFormatMaxLength <positive_integer>]
[-isRegex ( REGEX | NOTREGEX )])
<!--NeedCopy-->

示例:

bind appfw profile pr_ffc -fieldFormat "login_name" ".*/login.php" integer -fieldformatMinLength 3 -FieldformatMaxlength 6
<!--NeedCopy-->

使用 GUI 配置字段格式安全检查

在 GUI 中,您可以管理字段类型。您还可以在窗格中为与应用程序关联的配置文件配置“字段格式”安全检查。

使用 GUI 添加、修改或删除字段类型

  1. 导航到“应用程序防火墙”节点。在“设置”中,单击“管理字段类型”以显示“配置应用程序防火墙字段类型”对话框。
  2. 单击 添加 以添加新的字段类型。按照此窗格中的说明操作,然后单击创建。如果已部署规则当前未使用任何用户添加的字段类型,也可以编辑或删除该字段类型。

使用 GUI 添加或修改字段格式安全检查

  1. 导航到应用程序防火墙 > 配置文件,突出显示目标配置文件,然后单击编辑

  2. 高级设置窗格中,单击安全检查

    安全检查表显示当前为所有安全检查配置的操作设置。您有 2 个配置选项:

    1. 如果您只想为字段格式启用或禁用“阻止”、“日志”、“统计”和“学习”操作,则可以选中或清除表中的复选框,单 “确定”,然后单击“保存并关闭”以关闭“安全”检查窗格。
    2. 如果要为此安全检查配置其他选项,请双击“字段格式”,或者选择该行并单击“操作设置”,以显示“默认字段格式”的以下选项:
      • 字段类型— 选择要配置为默认字段类型的字段类型。您可以选择内置和用户定义的字段类型。已部署的字符映射也包含在列表中,可以选择。

      • 最小长度— 指定每个字段中必须包含的最小字符数。可能的值:0-65535。

      • 最大长度— 指定每个字段中必须包含的最大字符数。可能的值:1-65535。

        您还可以在“字段格式设置”窗格中编辑“阻止”、“日志”、“统计”和“学习”操作。

    进行上述任何更改后,单击“确定”保存更改并返回到“安全检查”表格。如果需要,您可以继续配置其他安全检查。单击确定以保存在“安全检查”部分中所做的所有更改,然后单击保存并关闭以关闭“安全性检查”窗格。

使用 GUI 配置字段格式放宽规则

  1. 导航到应用程序防火墙 > 配置文件,突出显示目标配置文件,然后单击编辑

  2. 高级设置 窗格中,单击 放宽规则。“放宽规则”表中有一个字段格式条目。您可以双击或选择此行并单击“编辑”按钮,以访问“字段格式放宽规则”对话框。您可以对放松规则执行“添加”、“编辑”、“删除”、“用”或“禁用”操作。

对于所有放宽规则的综合视图,可以突出显示“字段格式”行并单击“可视化工具”。已部署放宽的可视化工具为您提供了添加新规则或编辑现有规则的选项。您还可以通过选择节点并单击放宽可视化工具中的相应按钮来启用或禁用一组规则。

将学习功能与字段格式校验结合使用

启用学习操作后,Web App Firewall 学习引擎会监视流量并了解触发的冲突。您可以定期检查这些学习的规则。经过适当考虑,您可以将学习的规则部署为字段格式放宽规则。

字段格式学习增强-版本 11.0 中引入了 Web App Firewall 学习增强功能。在以前的版本中,一旦部署了解的字段格式建议,Web App Firewall 学习引擎将停止监视有效请求,以便根据新数据点推荐新规则。这限制了配置的安全保护,因为学习数据库不包括安全检查处理的有效请求中看到的新数据的任何表示形式。

冲突行为不再伴随学习。学习引擎可以学习并为字段格式提供建议,无论是否存在冲突行为。除了检查阻止的请求以确定当前字段格式是否过于限制和需要放宽之外,学习引擎还监视允许的请求,以确定当前字段格式是否过于宽松,并允许通过部署更多限制性规则.

以下是字段格式学习行为的摘要:

绑定字段格式-此方案中的行为保持不变。所有学习数据都发送到 asearn 引擎。学习引擎建议基于数据集的字段格式规则。

字段格式被绑定:在以前的版本中,观察到的数据只有在冲突的情况下才会发送到 asearn 引擎。学习引擎建议基于数据集的字段格式规则。在 11.0 版本中,所有数据都被发送到 asearn 引擎,即使没有触发冲突。学习引擎建议基于所有接收输入的整个数据集的字段格式规则。

学习增强的用例:

如果初始字段格式学习的规则基于少量数据样本,则一些非典型值可能会导致建议对目标字段过于宽松。通过持续的学习,Web App Firewall 可以观察每个请求中的数据点,从而为学习的建议收集具有代表性的样本。这有助于进一步加强安全性,以便部署具有足够范围值的最佳输入格式。

字段格式规则

字段格式学习使用“字段类型”的优先级以及以下学习阈值的配置设置:

  • FieldFormatMinThreshold — 在生成学习的放宽之前必须遵守特定表单字段的最小次数。默认值:1。
  • fieldFormatPercentThreshold — 在生成学习的放宽之前,表单字段与特定字段类型匹配的次数百分比。默认值:0。

字段格式规则建议基于以下条件:

  • 字段类型建议— 字段类型建议由现有字段类型的分配优先级和指定的字段格式阈值确定。优先级决定字段类型与输入匹配的顺序。较低的数字指定了较高的优先级。例如,“字段类型”整数具有较高的优先级 (30),因此在“字段类型字母”(50) 之前评估。阈值确定为收集数据点具有代表性的样本而评估的输入数。为已配置的“字段类型”分配正确的优先级,并为 fieldFormatPercentThresholdfieldFormatMinThreshold 参数配置适当的 learningsetting 值对于获取正确的“字段格式”建议至关重要。根据配置的阈值,具有最高优先级的字段类型首先与输入匹配。如果存在匹配,则建议使用此字段类型而不考虑其他字段类型。例如,如果所有输入仅包含数字,则三个默认字段类型、整数、字母和任意字段类型都将匹配。但是,推荐使用整数,因为它具有最高优先级。
  • 建议的最小和最大长度-“字段格式”的最小和最大长度的计算与“字段类型”的确定无关。字段格式长度计算基于所有观测到的输入的平均长度。建议将此计算平均值的一半作为最小值,建议将该平均值的两倍作为最大值。最小长度的范围为 0-65535,最大长度的范围为 1-65535。最小长度的配置值不能超过最大长度。
  • 处理空格字符-在检查字段格式长度时,“字段格式”校验对每个空格字符进行计数。前导空格或尾随空格不会被剥离,并且输入字符串中间的多个连续空格在输入处理过程中不再合并为单个空格。

说明字段格式建议的示例:

Total requests: 100
Number of Req with Field Type:
Int : 22            (22 int values) – 22%
Alpha : 44                  (44 alpha values) – 44%
Alphanum: 14            (14 + 44 + 22 = 80 alphanum values) = 80%
noHTML: 10              (80 + 10 = 90 noHTML values) = 90%
any : 10                     (90 + 10 = 100 any values) = 100%

% threshold                              Suggested Field Type
0-22                int
23-44               alpha
45-80               alphanum
81-90               noHTML
91-100              any
<!--NeedCopy-->

使用命令行界面查看或使用学习的数据

show appfw learningdata <profilename> FieldFormat
rm appfw learningdata <profilename> -fieldFormat <string>  <formActionURL>
export appfw learningdata <profilename> FieldFormat
<!--NeedCopy-->

使用 GUI 查看或使用学习的数据

  1. 导航到应用程序防火墙 > 配置文件,突出显示目标配置文件,然后单击编辑

  2. 在“高级设置”窗格中,单击“学习规则”。您可以选择“已学习规则”表中的“字段格式”条目,然后双击该条目以访问已学习的规则。您可以部署已学习的规则或编辑规则,然后再将其部署为放宽规则。要放弃规则,您可以选择该规则并单击 过按钮。您一次只能编辑一个规则,但可以选择要部署或跳过的多个规则。

    还可以选择通过选择“学习规则”表中的“字段格式”条目,然后单击“可视化工具”以获取所有学习冲突的综合视图来显示已学习放宽的摘要视图。可视化工具使得管理学到的规则变得非常简单。它在一个屏幕上提供了一个全面的数据视图,并且只需点击一下便于对一组规则采取操作。可视化工具的最大优势是它推荐正则表达式来整合多个规则。您可以根据分隔符和操作 URL 选择这些规则的子集。通过从下拉列表中选择数字,可以在可视化工具中显示 25、50 或 75 条规则。学习规则的可视化工具提供了编辑规则并将其作为放宽部署的选项。或者您可以跳过规则忽略它们。

将日志功能与字段格式校验结合使用

启用日志操作后,将“字段格式安全检查冲突”记录在审核日志中作为 APPFW_FIELDFORMAT 冲突。Web App Firewall 支持本机和 CEF 日志格式。您也可以将日志发送到远程 syslog 服务器。

使用命令行访问日志消息

切换到 shell 并尾随 /var/log/ 文件夹中的 ns.log 以访问与字段格式冲突相关的日志消息:

  • Shell
  • tail -f /var/log/ns.log | grep APPFW_FIELDFORMAT

使用 GUI 访问日志消息

Citrix GUI 包含一个非常有用的工具(Syslog 查看器),用于分析日志消息。您有多个用于访问 Syslog 查看器的选项:

  • 导航到应用程序防火墙 > 配置文件,选择目标配置文件,然后单击安全检查。突出显示“字段格式”行并单击日志。当您直接从配置文件的字段格式安全 检查访问日志时,它会过滤掉日志消息,并仅显示与这些安全检查冲突相关的日志。

  • 您还可以通过导航到 Citrix ADC > 系统 > 审核 访问系统 日志查看器。在 审计消息 部分,单击 Syslog 消息 链接以显示 S yslog Viewer,该查看器显示所有日志消息,包括其他安全检查违规日志。这对于在请求处理过程中可能触发多个安全检查冲突时进行调试非常有用。

  • 导航到 应用程序防火墙 > 策略 > 审核 。在 审计消息 部分中,单击 Syslog 消息链接以显示 Syslog Viewer,其中显示所有日志消息,包括其他安全检查违规日志。

    基于 HTML 的 Syslog 查看器提供了各种筛选选项,用于仅选择您感兴趣的日志消息。要访问字段格式安全检查冲突日志消息,请在模块的下拉选项中选择 APPFW 进行筛选。“事件类型”显示一组丰富的选项,以进一步优化您的选择。例如,如果选中 APPFW_FIELDFORMAT 复选框并单击 应用 按钮,则系统日志查看器中只会显示与字段格式安全检查冲突相关的日志消息。

如果将游标放在特定日志消息的行中,则日志消息下方会显示多个选项(如 Module 和 EventType)。您可以选择这些选项中的任何一个以突出显示日志中的相应信息。

请求未被阻止时的本机格式日志消息示例

Jun 10 22:32:26 <local0.info> 10.217.31.98 06/10/2015:22:32:26 GMT ns 0-PPE-0 :
default APPFW APPFW_FIELDFORMAT 97 0 :  10.217.253.62 562-PPE0
x1MV+YnNGzQFM3Bsy2wti4bhXio0001 pr_ffc http://aaron.stratum8.net/FFC/login_post.php
Field format check failed for field passwd="65568888sz-*_" <not blocked>
Example of a CEF format log message when the request is blocked
Jun 11 00:03:51 <local0.info> 10.217.31.98
CEF:0|Citrix|Citrix ADC|NS11.0|APPFW|APPFW_FIELDFORMAT|6|src=10.217.253.62 spt=27076
method=POST requet=http://aaron.stratum8.net/FFC/maxlen_post.php msg=Field format check
failed for field text_area="" cn1=108 cn2=644 cs1=pr_ffc cs2=PPE0
cs3=GaUROfl1Nx1jJTvja5twH5BBqI0000 cs4=ALERT cs5=2015 act=blocked
<!--NeedCopy-->

字段格式化冲突行为的统计信息

启用统计操作时,当 Web App Firewall 对此安全检查执行任何操作时,字段格式检查的相应计数器将增加。这些统计数据是针对流量、冲突和日志的速率和总计数收集的。日志计数器的增量可能因配置的设置而异。例如,如果启用了阻止操作,则对包含 3 个字段格式冲突的页面的请求将统计数据计数器递增一个,因为一旦检测到第一个字段格式冲突,该页面就会被阻止。但是,如果禁用了块,则处理相同的请求会将冲突的统计数据计数器和日志递增 3,因为每个字段格式冲突都会生成一条单独的日志消息。

使用命令行显示字段格式统计信息

在命令提示符下,键入:

sh appfw stats

要显示特定配置文件的统计信息,请使用以下命令:

stat appfw profile <profile name>

使用 GUI 显示字段格式统计信息

  1. 导航到 系统 > 安全 > 应用程序防火墙
  2. 在右窗格中,访问 统计信息 链接。
  3. 使用滚动条查看有关字段格式冲突和日志的统计信息。统计表提供实时数据,每 7 秒更新一次。

部署提示

  • 启用字段格式操作日志、学习和统计信息。
  • 在您的应用程序运行具有代表性的流量示例后,查看学习的建议。
  • 如果大多数学习规则都推荐使用“字段类型”,请将该“字段类型”配置为“默认字段类型”。对于最小和最大长度,请使用这些规则建议的最宽范围。
  • 为不同字段类型或不同最小/最大长度更适合的其他字段部署规则。
  • 启用阻止和禁用学习。
  • 监视统计数据和日志。如果仍然触发大量违规,您可能需要查看日志消息以确认违规是必须被阻止的恶意请求。如果将有效请求标记为冲突,您可以编辑配置的“字段格式”规则以进一步放宽该规则,或者再次启用学习以获取基于新数据点的建议。

注意: 您可以通过获取新的学习建议来微调配置。

重要内容

请注意有关字段格式安全检查的以下几点:

  • 保护— 通过配置最佳字段格式规则,您可以防止许多攻击。例如,如果您指定字段只能包含整数,黑客将无法使用此字段启动 SQL 注入或跨站脚本攻击,因为启动此类攻击所需的输入将不符合配置的字段格式要求。
  • 性能— 您可以在字段格式规则中限制输入的最小和最大允许长度。这可以防止恶意用户输入过大的输入字符串,试图向服务器添加处理开销,或者更糟糕的是,由于堆栈溢出,导致服务器转储核心。通过限制输入大小,您可以缩短处理合法请求所需的时间。
  • 配置字段格式— 您必须启用其中一个操作(阻止、日志、统计信息、学习)才能使用字段格式保护。您还可以指定字段格式规则来标识表单字段中允许的输入。
  • 选择角色映射与字段类型-字符映射和字段类型都使用正则表达式。但是,字符映射通过缩小允许的字符列表来提供更具体的表达式。例如,对于 janedoe@citrix.com 之类的输入,学习引擎可能会推荐字段类型不包括字符映射表 [。@-za-Z] 可能更具体,因为它缩小了允许的非字母字符集。“字符映射”选项除了字母字符外,只允许两个非字母字符:句号 (.) 和位于 (@)。
  • 持续学习— Web App Firewall 监视并考虑所有传入数据(冲突以及允许的输入),以构建学习表以推荐规则。当新的传入数据到达时,这些规则将进行修订和更新。即使字段已具有绑定字段格式规则,也建议为字段建议新的字段格式规则。如果配置的“字段格式”限制性太强且阻止了有效请求,则可以部署更宽松的“字段格式”。同样,如果当前的字段格式过于通用,您可以通过部署更具限制性的字段格式来进一步优化和收紧安全性。
  • 覆盖规则— 如果已为字段/URL 组合部署规则,则 GUI 允许用户更新字段格式。一个对话框要求进行确认以替换现有规则。如果您使用的是命令行界面,则必须显式取消绑定以前的绑定,然后绑定新规则。
  • 多个匹配— 如果多个字段格式与给定字段名称及其操作 URL 匹配,Web App Firewall 会随意选择其中一个字段格式进行应用。
  • 缓冲区边界— 如果字段值跨多个流缓冲区扩展,并且字段值的这两个部分的格式不同,则会将对应于“any”的字段格式发送到学习数据库。
  • 字段格式与字段一致性检查-字段格式检查和字段一致性检查都是基于表单的保护检查。“字段格式”检查提供了与“表单字段一致性”检查不同的保护类型。表单字段一致性检查验证用户返回的 Web 表单的结构是否完好,是否遵守 HTML 中配置的数据格式限制,以及隐藏字段中的数据未被修改。除了从 Web 表单本身派生的内容之外,它可以在没有关于 Web 表单的任何具体知识的情况下做到这一点。“字段格式”检查可验证每个表单字段中的数据是否与您手动配置的特定格式限制匹配,或者学习功能生成并已批准。换句话说,“表单字段一致性”检查强制执行常规 Web 表单安全性,而“字段格式”检查强制执行 Web 表单允许输入的特定规则。