Citrix ADC

PCRE 字符编码格式

Citrix ADC 操作系统仅支持直接 输入可打印 ASCII 字符集中的字符,即十六进制代码介于十六进制 20 (ASCII 32) 和十六进制 7E (ASCII 127) 之间的字符。要在 Web App Firewall 配置中包含超出该范围的代码的字符,必须输入其 UTF-8 十六进制代码作为 PCRE 正则表达式。

如果将许多字符类型作为 URL、表单字段名称或安全对象表达式包含在 Web App Firewall 配置中,则需要使用 PCRE 正则表达式进行编码。这些措施包括:

  • 上 ASCII 字符。带有从十六进制 7F (ASCII 128) 到十六进制 FF (ASCII 255) 编码的字符。根据所使用的字符映射,这些编码可以引用控制代码、带重音或其他修改的 ASCII 字符、非拉丁字母字符以及基本 ASCII 集中未包含的符号。这些字符可以显示在 URL、表单字段名称和安全对象表达式中。
  • 双字节字符。带有使用两个 8 字节单词的编码的字符。双字节字符主要用于表示电子格式中文、日文和韩文文本。这些字符可以显示在 URL、表单字段名称和安全对象表达式中。

    ASCII 控制字符。用于向打印机发送命令的不可打印字符。所有十六进制代码小于十六进制 20 (ASCII 32) 的 ASCII 字符都属于此类别。但是,这些字符绝不应出现在 URL 或表单字段名称中,并且如果曾经出现在安全对象表达式中,则很少出现这些字符。

Citrix ADC 设备不支持整个 UTF-8 字符集,但仅支持以下八个字符集中找到的字符:

  • 美国英文(国际标准化组织-8859-1。虽然标签显示为“美国英语”,但 Web App Firewall 支持 ISO-8859-1 字符集(也称为 Latin-1 字符集)中的所有字符。这个字符集完全代表了大多数现代西欧语言,并代表了除少数不寻常的字符之外的所有其他字符。

  • 繁体中文 (Big5)。Web App Firewall 支持 BIG5 字符集中的所有字符,其中包括在香港、澳门、台湾以及许多居住在中国大陆以外的中国人常用的现代汉语口语和书写的所有繁体中文字符。

  • 简体中文 (GB2312)。Web App Firewall 支持 GB2312 字符集中的所有字符,其中包括所有在中国大陆常用的现代中文简体字符(构图)。

  • 日语 (SJIS)。Web App Firewall 支持 SHIFT-JIS (SJIS) 字符集中的所有字符,其中包括现代日语中常用的大多数字符(表象符)。

  • 日语 (欧盟-太平洋联盟)。Web App Firewall 支持 EUC-JP 字符集中的所有字符,其中包括现代日语中常用的所有字符(理想字符)。

  • 朝鲜语 (欧洲联盟-克罗地亚)。Web App Firewall 支持 EUC-KR 字符集中的所有字符,其中包括在现代韩语中常用的所有字符(表象符)。

  • 土耳其语 (国际标准化组织-8859-9)。Web App Firewall 支持 ISO-8859-9 字符集中的所有字符,其中包括现代土耳其语中使用的所有字母。

  • 统一码 (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 代码的语法为 ASCII 字符“\xNN”;“\xNN\xNN”表示英语、俄语和土耳其语中使用的非 ASCII 字符;“\xNN\xNN\xNN”表示中文、日语和韩语中使用的字符。例如,如果你想表示一个! 在 Web App Firewall 正则表达式中作为 UTF-8 字符键入\ x21。如果您想包含一个 á,您可以键入 \xC3\xA1。

注意:

通常情况下,您不需要以 UTF-8 格式表示 ASCII 字符,但是当这些字符可能会混淆 Web 浏览器或底层操作系统时,您可以使用字符的 UTF-8 表示来避免这种混淆。例如,如果 URL 包含空格,则可能需要将空格编码为 x20,以避免混淆某些浏览器和 Web 服务器软件。

以下是 URL、表单字段名称和安全对象表达式的示例,其中包含非 ASCII 字符,这些字符必须作为 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 字符的表单字段名称。

    实际名称:nome_do_usuário 编码名称:^nome_do_usu\xC3\xA1rio$

  • 包含扩展 ASCII 字符的安全对象表达式。

    未编码的表达式[升序]{3,6} ¥[1-9\][0-9]{6,6} 编码的表达式:[升序]{3,6}\ xC2\ xA5 [1-9] [0-9] {6,6}

您可以在 Internet 上找到多个包含整个 Unicode 字符集和匹配 UTF-8 编码的表。下表提供了一个包含此信息的有用网站。

http://www.utf8-chartable.de/unicode-utf8-table.pl

要使本网站表格中的字符正确显示,您必须在计算机上安装适当的 Unicode 字体。如果不这样做,则角色的可视显示可能出现错误。但是,即使您没有安装适当的字体来显示字符,这组网页上的描述以及 UTF-8 和 UTF-16 代码都是正确的。

PCRE 字符编码格式