关于配置文件的补充信息
以下是有关 Web App Firewall 配置文件特定方面的补充信息。此信息说明了如何在安全检查规则或放宽中包含特殊字符,以及如何在配置配置文件时使用变量。
配置变量支持
现在,您可以使用标准 NetScaler 命名变量来配置 Web App Firewall 的安全检查和设置,而不是使用静态值。通过创建变量,您可以更轻松地将配置导出然后导入到新的 NetScaler 设备,或者从一组配置文件更新现有的 NetScaler 设备。当您使用测试平台设置开发针对本地网络和服务器调整的复杂的 Web App Firewall 配置,然后将该配置传输到生产 NetScaler 设备时,这可以简化更新。
创建 Web App Firewall 配置变量的方法与创建任何其他 NetScaler 命名变量的方式相同,遵循标准 NetScaler 惯例。您可以使用 NetScaler 命令行或 GUI 创建已命名的表达式变量。
可以使用变量而不是静态值来配置以下 URL 和表达式:
- 起始 URL (-starturl)
- 拒绝 URL (-denyurl)
- 表单域一致性检查的表单操作 URL (-fieldconsistence)
- XML SQL 注入检查的操作 URL (-xmlSQLinInjection)
- XML 跨站点脚本检查的操作 URL(-xmlcross-site scripting)
- HTML SQL 注入检查的表单操作 URL (-SQLinInjection)
- 字段格式检查的表单操作 URL (-fieldFormat)
- 跨站请求伪造 (CSRF) 检查 (-csrfTag)的表单来源 URL 和表单操作 URL
- HTML 跨站点脚本检查的表单操作 URL (-crossSiteScripting)
- 安全对象 (-safeObject)
- XML 拒绝服务 (xDoS) 检查的操作 URL (-XMLDoS)
- Web 服务互操作性检查的 URL (-XMLWSIURL)
- <XML 验证检查的 URL (-XMLValidationURL)
- XML 附件检查的 URL (-XMLAttachmentURL)
有关详细信息,请参阅 策略和表达式。
要在配置中使用变量,请将变量名称包括在两个 (@) 符号之间,然后完全像使用它替换的静态值一样使用它。例如,如果要使用 GUI 配置“拒绝 URL”检查,并希望将命名的表达式变量 myDenyURL 添加到配置中,则应在“添加拒绝 URL”对话框的“拒绝 URL”文本区域中键入 @myDenyURL@。要使用 NetScaler 命令行执行相同的任务,请键入 add appfw profile <name>
-denyURLAction @myDenyURL@。
PCRE 字符编码格式
NetScaler 操作系统仅支持直接输入可打印的 ASCII 字符集中的字符,即十六进制代码介于 HEX 20 (ASCII 32) 和 HEX 7E (ASCII 127) 之间的字符。要在 Web App Firewall 配置中包含代码超出该范围的字符,必须将其 UTF-8 十六进制代码作为 PCRE 正则表达式输入。
如果您在 Web App Firewall 配置中将许多字符类型作为 URL、表单字段名称或安全对象表达式包含在 Web App Firewall 配置中,则需要使用 PCRE 正则表达式进行编码。它们包括:
-
高 ASCII 字符。编码从 HEX 7F (ASCII 128) 到 HEX FF (ASCII 255) 的字符。根据使用的字符映射,这些编码可以引用控制代码、带有重音或其他修改的 ASCII 字符、非拉丁字母字符以及基本 ASCII 集中未包含的符号。这些字符可以出现在 URL、表单字段名称和安全对象表达式中。
-
双字节字符。编码使用两个 8 字节单词的字符。双字节字符主要用于以电子格式表示中文、日文和韩文文本。这些字符可以出现在 URL、表单字段名称和安全对象表达式中。
-
ASCII 控制字符。用于向打印机发送命令的不可打印字符。所有十六进制代码小于HEX 20 (ASCII 32) 的 ASCII 字符都属于此类别。但是,这些字符绝不能出现在 URL 或表单字段名称中,并且很少出现在安全对象表达式中。
NetScaler 设备不支持整个 UTF-8 字符集,而仅支持以下八个字符集中的字符:
-
美国英语 (ISO-8859-1)。尽管标签显示为“美国英语”,但 Web App Firewall 支持 ISO-8859-1 字符集(也称为 Latin-1 字符集)中的所有字符。此字符集完全代表了大多数现代西欧语言,并代表了其余部分中除了少数不常见的字符以外的所有字符。
-
繁体中文 (Big5)。Web App Firewall 支持 BIG5 字符集中的所有字符,其中包括在香港、澳门、台湾地区以及居住在中国大陆以外的许多具有华裔血统的人在现代汉语中常用的所有繁体汉字(cedjoka)。
-
简体中文 (GB2312)。Web App Firewall 支持 GB2312 字符集中的所有字符,该字符集包括现代汉语中常用的所有简体中文字符(中日文字),如在中国大陆所说和书写。
-
日语 (SJIS)。Web App Firewall 支持 Shift-JIS (SJIS) 字符集中的所有字符,其中包括现代日语中常用的大多数字符(中日语)。
-
日语 (EUC-JP)。Web App Firewall 支持 EUC-JP 字符集中的所有字符,其中包括现代日语中常用的所有字符(中日文)。
-
韩语 (EUC-KR)。Web App Firewall 支持 EUC-KR 字符集中的所有字符,其中包括现代韩语中常用的所有字符(中日文字)。
-
土耳其语 (ISO-8859-9)。Web App Firewall 支持 ISO-8859-9 字符集中的所有字符,其中包括现代土耳其语中使用的所有字母。
-
Unicode (UTF-8)。Web App Firewall 支持 UTF-8 字符集中的某些附加字符,包括现代俄语中使用的字符。
配置 Web App Firewall 时,您可以使用在 UTF-8 规范中分配给该字符的十六进制代码将所有非 ASCII 字符作为 PCRE 格式的正则表达式输入。常规 ASCII 字符集中的符号和字符(在该字符集中分配了单位两位数代码)在 UTF-8 字符集中分配了相同的代码。例如,感叹号 (!),在 ASCII 字符集中被指定为十六进制代码 21,在 UTF-8 字符集中也是十六进制 21。来自其他受支持字符集的符号和字符在 UTF-8 字符集中分配了一组成对的十六进制代码。例如,带有尖音符号 (á) 的字母 a 被分配为 UTF-8 代码 C3 A1。
在 Web App Firewall 配置中用于表示这些 UTF-8 代码的语法是:“xNN”表示 ASCII 字符;“\ xNN\ xNN”表示英语、俄语和土耳其语中使用的非 ASCII 字符;“\ xNN\ xNN”表示中文、日语和韩语中使用的字符。例如,如果您想表示 a!在作为 UTF-8 字符的 Web App Firewall 正则表达式中,可以键入\ x21。如果要包含 á,可以键入\ xC3\ xA1。
注意:
通常,您不需要以 UTF-8 格式表示 ASCII 字符,但是当这些字符可能会混淆 Web 浏览器或底层操作系统时,您可以使用字符的 UTF-8 表示来避免这种混淆。例如,如果 URL 包含空格,您可能希望将空格编码为 x20,以避免混淆某些浏览器和 Web 服务器软件。
以下是包含非 ASCII 字符的 URL、表单字段名称和安全对象表达式的示例,这些字符必须作为 PCRE 格式的正则表达式输入才能包含在 Web App Firewall 配置中。每个示例首先显示实际的 URL、字段名称或表达式字符串,然后显示其的 PCRE 格式正则表达式。
-
包含扩展 ASCII 字符的 URL。
实际 URL:
http://www.josénuñez.com
编码后的 URL:
^http://www\[.\]jos\xC3\xA9nu\xC3\xB1ez\[.\]com$
-
另一个包含扩展 ASCII 字符的 URL。
实际 URL:
http://www.example.de/trömso.html
编码后的 URL:
^http://www[.]example\[.]de/tr\xC3\xB6mso[.]html$
-
包含扩展 ASCII 字符的表单字段名称。
Actual Name: nome_do_usuário
编码名称:
^nome_do_usu\xC3\xA1rio$
-
包含扩展 ASCII 字符的安全对象表达式。
未编码的表达式 [A-Z] {3,6} ¥[1-9][0-9]{6,6}
编码表达式:[A-Z] {3,6}\ xC2\ xA5[1-9][0-9]{6,6}
您可以在 Internet 上找到许多包含整个 Unicode 字符集和匹配 UTF-8 编码的表。包含此信息的有用网站位于以下 URL:
http://www.utf8-chartable.de/unicode-utf8-table.pl
要使本网站表格中的字符正确显示,您必须在计算机上安装适当的 Unicode 字体。否则,角色的视觉显示可能会出错。但是,即使您没有安装适当的字体来显示字符,这组网页上的描述以及 UTF-8 和 UTF-16 代码也是正确的。
倒置的 PCRE 表达式
除了匹配包含模式的内容外,您还可以使用反转 PCRE 表达式来匹配不包含模式的内容。要反转表达式,只需添加感叹号 (!)后跟空格作为表达式中的第一个字符。
注意: 如果表达式仅由感叹号组成,后面没有任何内容,则该感叹号将被视为文字字符,而不是表示反转表达式的语法。
以下 Web App Firewall 命令支持反转 PCRE 表达式:
- 起始 URL (URL)
- 拒绝 URL (URL)
- 表单字段一致性(表单操作 URL)
- Cookie 一致性(表单操作 URL)
- 跨站请求伪造 (CSRF)(表单操作 URL)
- HTML 跨站点脚本(表单操作 URL)
- 字段格式(表单操作 URL)
- 字段类型(类型)
- 机密字段 (URL)
注意:如果安全检查包含 isRegEx 标志或复选框,则必须将其设置为 YES 或选中才能在字段中启用正则表达式。否则,该字段的内容将被视为文字,并且不会解析正则表达式(反转或不反转)。
Web App Firewall 配置文件的禁用名称
以下名称分配给 NetScaler 设备上的内置操作和配置文件,不能用作用户创建的 Web App Firewall 配置文件的名称。
- AGRESSIVE
- ALLOW
- BASIC
- CLIENTAUTH
- COMPRESS
- CSSMINIFY
- DEFLATE
- DENY
- DNS-NOP
- DROP
- GZIP
- HTMLINIFY
- IMGOPISTIME
- JSMINIFY
- MODERATE
- 没有客户端身份验证
- NOCOMPRESS
- NONE(无)
- NOOP
- NOREWRITE
- RESET
- SETASLEARNNSLOG_ACT
- SETNSLOGPARAMS_ACT
- SETSYLOGPARAMS_ACT
- SETMSESSPARAMS_ACT
- SETVPNPARAMS_ACT
- SET_PREAUTHPARAMS_ACT
- default_DNS64_action
- dns_default_act_cacheBypass
- dns_default_act_drop
- nshttp_default_profile
- nshttp_default_strict_validation
- nstcp_default_Mobile_profile
- nstcp_default_XA_XD_profile
- nstcp_default_profile
- nstcp_default_tcp_interactive_stream
- nstcp_default_tcp_lan
- nstcp_default_tcp_lan_thin_stream
- nstcp_default_tcp_lfp
- nstcp_default_tcp_lfp_thin_stream
- nstcp_default_tcp_lnp
- nstcp_default_tcp_lnp_thin_stream
- nstcp_internal_apps