在策略表达式中使用运算符和操作数
运算符是标识操作一个或多个对象或操作数的运算(例如数学、布尔或关系运算)的符号。本主题的第一部分定义了您可以使用的运算符并提供了定义。第二部分列出了可用于特定限定符(例如方法、URL 和查询)的运算符。
运算符和定义
本节定义了创建策略表达式时可以使用的运算符,并对运算符进行了描述。
-
==, !=, EQ, NEQ
这些运算符测试精确匹配。它们区分大小写(“cmd.exe”不等于“cMd.exe”)。这些运算符可用于创建权限以允许满足精确语法的特定字符串,但排除其他字符串。
-
GT
此运算符用于数值比较。它用于 URL 和查询字符串的长度。
-
CONTAINS、NOTCONTAINS
这些运算符对指定的限定符进行检查,以确定指定的字符串是否包含在限定符中。这些运算符不区分大小写。
-
EXISTS、NOTEXISTS
这些运算符检查是否存在特定的限定符。例如,这些运算符可以应用于 HTTP 标头,以确定是否存在特定的 HTTP 标头或 URL 查询。
-
CONTENTS
该运算符检查限定符是否存在以及它是否有内容(即,无论值是什么,标头是否存在以及是否有与之关联的值)。
限定符、运算符、操作数、操作和示例
本节显示了可用于运算符和操作数的参数。每个项目都以限定符开头,然后列出关联的运算符和操作数,描述表达式执行的操作,并提供示例。
-
Method(方法)
运算符:EQ、NEQ 操作数:必填项:
- 标准 HTTP 方法
- 支持的方法
- GET、HEAD、POST、PUT、DELETE OPTIONS、TRACE、CONNECT 操作:将传入的请求方法验证为配置的方法。 示例:Method EQ GET
URL
-
运算符:EQ、NEQ 操作数:必填项:URL(格式:/[prefix][*][.suffix]) 操作:使用配置的 URL 验证传入 URL。 示例: URL EQ / foo*.asp URL EQ /foo* URL EQ /*.asp URL EQ /foo.asp
-
运算符:CONTAINS、NOTCONTAINS 操作数:必填项:任何字符串(用引号表示) 操作:验证传入 URL 中是否存在配置的模式。(包括 URL 和 URL 查询。) 示例:URL CONTAINS ‘ZZZ’
-
URL LEN
运算符:GT 操作数:必填项:长度(以整数值表示) 操作:将传入 URL 长度与配置的长度进行比较。(包括 URL 和 URL 查询。) 示例:URLLEN GT 60
-
URL QUERY
运算符:CONTAINS、NOTCONTAINS 操作数:必填项:任何字符串(带引号)。 可选:长度和偏移量 操作: 验证传入的 URL 查询中是否存在配置的模式。 用法与内容类似。 如果未指定选项,则使用该模式之后的整个 URL 查询。 如果存在选项,则仅显示使用该模式后的查询长度。 偏移量用于指示从何处开始搜索图案。 示例:URLQUERY CONTAINS ‘ZZZ’
-
URL QUERY LEN
运算符:GT 操作数:必填项:长度(以整数值表示) 操作:将传入 URL 查询长度与配置的长度进行比较。 示例:URLQUERYLN GT 60
-
URL TOKENS
运算符:EQ、NEQ 操作数:必填项:URL 标记(支持的 URL 标记 =、+、%、!、&、?)。 操作:比较传入 URL 中是否存在已配置的令牌。必须在问号前面输入反斜杠 (\)。 示例:URLTOKENS EQ ‘% , +, &, \?’
-
VERSION
运算符:EQ、NEQ 操作数:必填项:标准 HTTP 版本。有效的 HTTP 版本字符串 HTTP/1.0、HTTP/1.1 操作:将传入请求的 HTTP 版本与配置的 HTTP 版本进行比较。 示例:VERSION EQ HTTP/1.1
标题
-
运算符:EXISTS、NOTEXISTS 操作数:无 操作:检查传入的请求中是否存在 HTTP 标头。 示例:Header Cookie EXISTS
-
运算符:CONTAINS、NOTCONTAINS 操作数:必填项:任何字符串(带引号)。 可选:长度和偏移量 操作:验证传入请求的特定标头中是否存在已配置的模式。用法与内容类似。如果未指定选项,则使用该模式之后的整个 HTTP 标头值。如果存在选项,则仅显示使用该模式后标题的长度。偏移量用于指示从何处开始搜索图案。 示例:Header Cookie CONTAINS “&sid”
-
运算符:CONTENTS 操作数:可选:长度和偏移量 操作:使用 HTTP 标头的内容如果未指定选项,则使用整个 HTTP 标头值。如果存在选项,则仅使用从偏移量开始的标题长度。 示例:Header User-Agent CONTENTS
-
SOURCEIP
运算符:EQ、NEQ 操作数:必填项:IP 地址 可选:子网掩码 操作:根据配置的 IP 地址验证传入请求中的源 IP 地址。如果指定了可选子网掩码,则根据配置的 IP 地址和子网掩码对传入请求进行验证。 示例:Sourceip EQ 192.168.100.0 -netmask 255.255.255.0
-
DESTIP
运算符:EQ,NEQ 操作数:必填项:IP 地址 可选:子网掩码 操作:根据配置的 IP 地址验证传入请求中的目标 IP 地址。如果指定了可选子网掩码,则根据配置的 IP 地址和子网掩码对传入请求进行验证。 示例:Sourceip EQ 192.168.100.0 -netmask 255.255.255.0
-
SOURCEPORT
运算符:EQ、NEQ 操作数 :必填项:端口号可选:端口范围 操作:根据配置的端口号验证传入请求中的源端口号。 示例:SOURCEPORT EQ 10–20
-
DESTPORT
运算符:EQ、NEQ 操作数 :必填项:端口号可选:端口范围 操作:根据配置的端口号验证传入请求中的目标端口号。 示例:DESTPORT NEQ 80
-
CLIENT.SSL.VERSION
运算符:EQ、NEQ 操作数:必需:SSL 版本 操作:检查安全连接中使用的 SSL 或 TLS 版本的版本。 示例:CLIENT.SSL.VERSION EQ SSLV3
-
CLIENT.CIPHER.TYPE
运算符:EQ、NEQ 操作数:必填项:客户端密码类型 操作:检查所使用的密码类型(导出或非导出)。 示例:CLIENT.CIPHER.TYPE EQ EXPORT
-
CLIENT.CIPHER.BITS
运算符:EQ、NEQ、GE、LE、GT、LT 操作数:必填项:客户端密码位 操作:检查所用密码的密钥强度。 示例:CLIENT.CIPHER.BITS GE 40
-
CLIENT.CERT
运算符:EXISTS、NOTEXISTS 操作数:无 操作:检查客户端在 SSL 握手期间是否发送了有效的证书。 示例:CLIENT.CERT EXISTS
-
CLIENT.CERT.VERSION
运算符:EQ、NEQ、GE、LE、GT、LT 操作数:客户端证书版本 操作:检查客户端证书的版本。 示例:CLIENT.CERT.VERSION EQ 2
-
CLIENT.CERT.SERIALNUMBER
运算符:EQ,NEQ 操作数 :必填项:客户证书序列号操作:检查客户证书的序列号。序列号被视为字符串。 示例:CLIENT.CERT.SER IALNUMBER EQ 2343323
-
CLIENT.CERT.SIGALGO
运算符:EQ,NEQ 操作数:必填项:客户端证书签名算法。 操作:检查客户证书中使用的签名算法。 示例:CLIENT.CERT.SIGALGO EQ md5WithRSAEncryption
-
CLIENT.CERT.SUBJECT
运算符:CONTAINS、NOTCONTAINS 操作数:必填项:客户证书主题 可选:长度,偏移量 操作:检查客户证书的主题字段。 示例:CLIENT.CERT.SUBJECT CONTAINS CN= Access_Gateway
-
CLIENT.CERT.ISSUER
运算符:CONTAINS、NOTCONTAINS 操作数:必填项:客户端证书颁发者 可选:长度,偏移量 操作:检查客户证书的颁发者字段。 示例:CLIENT.CERT.ISSUER CONTAINS O=Verisign
-
CLIENT.CERT.VALIDFROM
运算符:EQ、NEQ、GE、LE、GT、LT 操作数:必填项:日期 操作:检查客户证书的有效日期。 有效的日期格式如下: Tue, 05 Nov 1994 08:12:31 GMT Tuesday, 05-Nov-94 08:12:31 GMT Tue Nov 14 08:12:31 1994 示例:CLIENT.CERT.VALIDFROM GE ‘Tue Nov 14 08:12:31 1994’
-
CLIENT.CERT.VALIDTO
运算符:EQ、NEQ、GE、LE、GT、LT 操作数:必填项:日期 操作:检查客户证书的有效日期。 有效的日期格式如下: Tue, 05 Nov 1994 08:12:31 GMT Tuesday, 05-Nov-94 08:12:31 GMT Tue Nov 14 08:12:31 1994 示例:CLIENT.CERT.VALIDTO GE ‘Tue Nov 14 08:12:31 1994’