Citrix ADC

PCRE字符编码格式

思杰ADC操作系统支持直接只能在可打印ASCII字符集中输入字符-十六进制代码在HEX 20 (ASCII 32)和HEX 7E (ASCII 127)之间的字符。要在Web应用防火墙配置中包含一个代码超出该范围的字符,必须以PCRE正则表达式的形式输入其UTF-8十六进制代码。

如果您将许多字符类型作为URL、表单字段名或安全对象表达式包含在Web应用防火墙配置中,则它们需要使用PCRE正则表达式进行编码。它们包括:

  • 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字符集,而只支持以下八个字符集中的字符:

  • 英文US (ISO-8859-1)。虽然标签上写着“English US”,但Web应用程序防火墙支持ISO-8859-1字符集(也称为Latin-1字符集)中的所有字符。这个字符集完全代表了大多数现代西欧语言,除了少数不常见的字符外,还代表了其他所有语言。

  • 中文繁体(Big5)。Web应用程序防火墙支持BIG5字符集中的所有字符,其中包括在香港、澳门、台湾以及居住在中国大陆以外的许多中国民族遗产中常用的现代汉语口语和书面语中的所有繁体汉字(表意文字)。

  • 简体中文(GB2312)。Web应用程序防火墙支持GB2312字符集中的所有字符,该字符集包括中国大陆常用的现代汉语口语和书面语中的所有简体汉字(表意文字)。

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

  • 日本(EUC-JP)。Web应用程序防火墙支持eu - 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代码的语法是“\xNN”,表示ASCII字符;" \xNN\xNN "表示英语、俄语和土耳其语中使用的非ascii字符;“\xNN\xNN\xNN”表示中文、日文和韩文中使用的字符。例如,如果您想表示一个!在Web应用程序防火墙正则表达式中以UTF-8字符的形式输入\x21。如果您想包含一个,您可以输入\xC3\xA1。

注意:

通常不需要用UTF-8格式表示ASCII字符,但是当这些字符可能使web浏览器或底层操作系统感到困惑时,可以使用字符的UTF-8表示来避免这种混淆。例如,如果URL包含一个空格,您可能希望将该空格编码为\x20,以避免混淆某些浏览器和web服务器软件。

下面是url、表单字段名和包含非ascii字符的安全对象表达式的示例,这些字符必须作为pcre格式的正则表达式输入,以便包含在Web App Firewall配置中。每个示例首先显示实际的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编码的表。下表提供了一个包含这些信息的有用网站。

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

为使本网站上表格中的字符正确显示,您的计算机上必须安装适当的Unicode字体。如果不这样做,字符的视觉显示可能会出错。即使你没有安装合适的字体来显示一个字符,但是,这组网页上的描述和UTF-8和UTF-16代码是正确的。

PCRE字符编码格式

在本文中