关于概要文件的补充信息
以下是关于Web应用防火墙配置文件特定方面的补充信息。此信息解释了如何在安全检查规则或松弛项中包含特殊字符,以及如何在配置概要文件时使用变量。
配置变量支持
现在可以使用标准Citrix ADC命名变量来配置Web应用程序防火墙的安全检查和设置,而不是使用静态值。通过创建变量,您可以更轻松地将配置导出并导入到新的Citrix ADC设备,或者从一组配置文件更新现有的Citrix ADC设备。当您使用测试平台设置来开发针对本地网络和服务器调优的复杂Web应用程序防火墙配置,然后将该配置传输到生产Citrix ADC设备时,可以简化更新。
您可以按照标准Citrix ADC约定,以与创建任何其他Citrix ADC命名变量相同的方式创建Web App Firewall配置变量。可以使用Citrix ADC命令行或Citrix GUI创建命名表达式变量。
下面的url和表达式可以配置为变量而不是静态值:
- 开始的URL(-starturl)
- 否认URL(-denyurl)
- 表单操作URL为表单字段一致性检查(-fieldconsistency)
- 动作URL为XML SQL注入检查(-xmlSQLInjection)
- 动作URLXML跨站脚本检查(-xmlcross-site脚本)
- 表单操作URL为HTML SQL注入检查(-sqlInjection)
- 表单操作URL为字段格式检查(-fieldFormat)
- 表单来源URL而且表单操作URL为跨站请求伪造(CSRF)检查(-csrfTag)
- 表单操作URL为HTML跨站脚本检查(-crossSiteScripting)
- 安全对象(-safeObject)
- 动作URL为XML拒绝服务(XDoS)检查(-XMLDoS)
- URL为Web服务互操作性检查(-XMLWSIURL)
- <URL为XML验证检查(-XMLValidationURL)
- URL为附件检查(-XMLAttachmentURL)
有关更多信息,请参见策略和表达式.
要在配置中使用变量,请将变量名放在两个at(@)符号之间,然后像使用它所替换的静态值一样使用它。例如,如果您正在使用GUI配置拒绝URL检查,并希望将命名表达式变量myDenyURL添加到配置中,您可以在“添加拒绝URL”对话框的“拒绝URL”文本区域中键入@myDenyURL@。要使用Citrix ADC命令行执行相同的任务,可以输入add appfw profile<名称>
-denyURLAction @myDenyURL@。
PCRE字符编码格式
Citrix ADC操作系统只支持直接输入可打印ASCII字符集中的字符——十六进制编码介于HEX 20 (ASCII 32)和HEX 7E (ASCII 127)之间的字符。要在Web应用程序防火墙配置中包含超出该范围的代码的字符,必须输入其UTF-8十六进制代码作为PCRE正则表达式。
许多字符类型需要使用PCRE正则表达式进行编码,如果您将它们作为URL、表单字段名或安全对象表达式包含在Web应用程序防火墙配置中。它们包括:
Upper-ASCII字符。编码从HEX 7F (ASCII 128)到HEX FF (ASCII 255)的字符。根据所使用的字符映射,这些编码可以引用控制码、带有重音或其他修改的ASCII字符、非拉丁字母字符以及基本ASCII集中不包括的符号。这些字符可以出现在url、表单字段名和安全对象表达式中。
双字节字符。使用两个8字节字进行编码的字符。双字节字符主要用于表示电子格式的中文、日语和韩语文本。这些字符可以出现在url、表单字段名和安全对象表达式中。
ASCII控制字符。用于向打印机发送命令的不可打印字符。所有十六进制编码小于HEX 20 (ASCII 32)的ASCII字符都属于这一类。但是,这些字符绝对不能出现在URL或表单字段名中,也很少出现在安全的对象表达式中。
Citrix ADC设备不支持整个UTF-8字符集,但只支持以下八个字符集中的字符:
英文美国(ISO-8859-1)。虽然标签上写着“English US”,但Web应用防火墙支持ISO-8859-1字符集(也称为Latin-1字符集)中的所有字符。这个字符集完全代表了大多数现代西欧语言,并代表了其他语言中除了少数不常见的字符之外的所有字符。
繁体中文(大五)。Web应用防火墙支持BIG5字符集中的所有字符,该字符集包括香港、澳门、台湾以及居住在中国大陆以外的许多华裔人士在现代汉语中常用的口语和书面语中的所有繁体字(表意文字)。
(GB2312)。Web应用防火墙支持GB2312字符集中的所有字符,包括中国大陆常用的现代汉语口语和书面语中的所有简体汉字(表意文字)。
日本(SJIS)。Web应用防火墙支持Shift-JIS (SJIS)字符集中的所有字符,其中包括现代日语中常用的大多数字符(表意文字)。
日本(EUC-JP)。Web应用防火墙支持EUC-JP字符集中的所有字符,其中包括现代日语中常用的所有字符(表意文字)。
韩国(EUC-KR)。Web应用防火墙支持EUC-KR字符集中的所有字符,其中包括现代韩语中常用的所有字符(表意文字)。
土耳其(iso - 8859 - 9)。Web应用防火墙支持ISO-8859-9字符集中的所有字符,其中包括现代土耳其语中使用的所有字母。
Unicode (utf - 8)。Web应用防火墙支持UTF-8字符集中的某些附加字符,包括现代俄语中使用的字符。
在配置Web应用程序防火墙时,使用UTF-8规范中分配给该字符的十六进制代码,将所有非ascii字符输入为pcre格式的正则表达式。普通ASCII字符集中的符号和字符在该字符集中被分配了单个两位数代码,在UTF-8字符集中被分配了相同的代码。例如,感叹号(!)在ASCII字符集中被赋值为十六进制代码21,在UTF-8字符集中也是十六进制21。来自其他受支持字符集的符号和字符在UTF-8字符集中分配了一组成对的十六进制代码。例如,带有重音的字母a (á)被分配为UTF-8代码C3 A1。
在Web应用防火墙配置中,用于表示这些UTF-8代码的语法是ASCII字符的“xNN”;“\xNN\xNN”用于英语、俄语和土耳其语中使用的非ascii字符;“\xNN\xNN\xNN”用于中文、日语和韩语字符。例如,如果你想表示一个!在Web应用防火墙中,正则表达式是UTF-8字符,你可以输入\x21。如果您想包含á,则键入\xC3\xA1。
注意:
通常不需要以UTF-8格式表示ASCII字符,但是当这些字符可能使web浏览器或底层操作系统感到困惑时,可以使用字符的UTF-8表示来避免这种混淆。例如,如果URL包含空格,您可能希望将空格编码为x20,以避免混淆某些浏览器和web服务器软件。
下面是url、表单字段名和安全对象表达式的示例,它们包含必须作为pcre格式正则表达式输入的非ascii字符,以便包含在Web应用程序防火墙配置中。每个示例首先显示实际的URL、字段名或表达式字符串,然后显示它的pcre格式正则表达式。
包含扩展ASCII字符的URL。
实际地址:
http://www.josenunez.com
编码的URL:
^ http://www \[。\]乔斯\ xC3 \ xA9nu \ xC3 \ xB1ez \[。\]com美元
另一个包含扩展ASCII字符的URL。
实际地址:
http://www.example.de/tromso.html
编码的URL:
^ http://www[]的例子\ [,]de / tr \ xC3 \ xB6mso html美元(。)
包含扩展ASCII字符的表单字段名。
实际名称: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应用防火墙命令支持反向PCRE表达式:
- 起始URL (URL)
- 拒绝URL (URL)
- 表单字段一致性(表单操作URL)
- Cookie一致性(表单操作URL)
- 跨站点请求伪造(CSRF)(表单操作URL)
- 跨站点脚本(表单动作URL)
- 字段格式(表单操作URL)
- 字段类型(Type)
- 保密字段(URL)
注意:如果安全检查中包含“isRegex”标志或复选框,则必须将其设置为“YES”或勾选该字段以启用正则表达式。否则,该字段的内容将被视为文字,并且不解析正则表达式(无论是否倒置)。
Web应用防火墙配置文件不允许使用的名称
以下名称分配给Citrix ADC设备上的内置操作和配置文件,不能用作用户创建的Web应用程序防火墙配置文件的名称。
- 开拓进取
- 允许
- 基本
- CLIENTAUTH
- 压缩
- CSSMINIFY
- 缩小
- 否认
- DNS-NOP
- 下降
- GZIP
- HTMLMINIFY
- IMGOPTIMIZE
- JSMINIFY
- 温和的
- NOCLIENTAUTH
- NOCOMPRESS
- 没有一个
- 无操作
- NOREWRITE
- 重置
- SETASLEARNNSLOG_ACT
- SETNSLOGPARAMS_ACT
- SETSYSLOGPARAMS_ACT
- SETTMSESSPARAMS_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