ADC

PCRE 字符编码格式

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

如果您将许多字符类型作为 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\xNN 表示中文、日语和韩语中使用的字符。例如,如果您想表示 ! 在 Web App Firewall 正则表达式中,作为 UTF-8 字符,您可以键入\ 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 字符的表单字段名称。

    实际名称: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 编码的表。下表提供了包含这些信息的有用网站。

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

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

PCRE 字符编码格式