在策略表达式中使用运算符和操作数
运算符是标识操作一个或多个对象或操作数的运算(例如数学、布尔或关系运算)的符号。本主题的第一部分定义了您可以使用的运算符并提供了定义。第二部分列出了可用于特定限定符(如方法、URL 和查询)的运算符。
运算符和定义
本部分定义了创建策略表达式时可以使用的运算符,并提供了运算符的描述。
- ==,! =、当量、NEQ
这些运算符测试精确匹配。它们区分大小写(“cmd.exe”不等于“cMd.exe”)。这些运算符对于创建允许符合确切语法的特定字符串而排除其他字符串的权限非常有用。
- GT
此运算符用于数值比较;它用于 URL 和查询字符串的长度。
- CONTAINS、NOTCONTAINS
这些运算符对指定的限定符执行检查,以确定指定的字符串是否包含在限定符中。这些运算符不区分大小写。
- EXISTS、NOTEXISTS
这些运算符检查是否存在特定限定符。例如,这些运算符可应用于 HTTP 标头,以确定是否存在特定 HTTP 标头或 URL 查询是否存在。
- CONTENTS
此运算符检查限定符是否存在以及它是否具有内容(即,是否存在标头并且具有与它关联的值,无论值如何)。
限定符、运算符、操作数、操作和示例
本部分显示可用于运算符和操作数的参数。每个项目都以限定符开头,然后列出关联的运算符和操作数,描述表达式将执行的操作,并提供一个示例。
- 方法
运算符:EQ、NEQ 操作数:必填项: - 標準 HTTP 方法 - 支持的方法 - GET、HEAD、POST、PUT、DELETE OPTIONS、TRACE、CONNECT 操作:验证传入请求方法配置的方法。 示例:Method EQ GET
URL
运算符:EQ,NEQ 操作数:必填项:URL(格式:/[前缀] [*] [.后缀]) 操作:使用配置的 URL 验证传入 URL。 示例: URL EQ / foo*.asp URL EQ /foo* URL EQ /*.asp URL EQ /foo.asp
运算符:CONTAINS、NOTCONTAINS 操作数:必需:任何字符串(引号中) 操作:验证传入的 URL 是否存在配置的模式。(包括 URL 和 URL 查询。) 示例:URL CONTAINS ‘ZZZ’
- 网址莱恩
运算符:GT 操作数:必填项:长度(作为整数值) 操作:将传入 URL 长度与配置的长度进行比较。(包括 URL 和 URL 查询。) 示例:URLLEN GT 60
- URL 查询
运算符:CONTAINS、NOTCONTAINS 操作数:必填:任何字符串(引号中)。 可选:长度和偏移量 操作: 验证传入的 URL 查询是否存在配置的模式。 使用类似于内容。 如果未指定选项,则使用模式后的整个 URL 查询。 如果存在选项,则仅使用模式后查询的长度。 偏移量用于指示从哪里开始搜索模式。 示例:URLQUERY CONTAINS ‘ZZZ’
- URL QUERY LEN
运算符:GT 操作数:必需:长度(作为整数值) 操作:将传入 URL 查询长度与配置的长度进行比较。 示例:URLQUERYLN GT 60
- URL 令牌
运算符: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”
运算符:内容 操作数:可选:长度和偏移量 操作:使用 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,NOTEXERS 操作数:无 操作:检查客户端是否在 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’