AWS::WAF::ByteMatchSet ByteMatchTuple - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::WAF::ByteMatchSet ByteMatchTuple

注意

这是 AWS WAF Classic 文档。有关更多信息,请参阅开发人员指南中的 AWS WAF Classic

有关最新版本的 AWS WAF,请使用 AWS WAFV2 API 并参阅 AWS WAF 开发人员指南。对于最新版本,AWS WAF 具有一组用于区域和全球范围的终端节点。

您希望 AWS WAF 在 Web 请求中搜索的字节(通常是与 ASCII 字符对应的字符串)、您希望 AWS WAF 搜索的请求中的位置以及其他设置。

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "FieldToMatch" : FieldToMatch, "PositionalConstraint" : String, "TargetString" : String, "TargetStringBase64" : String, "TextTransformation" : String }

属性

FieldToMatch

您需要 AWS WAF 搜索的 Web 请求部分,例如搜索指定的标头或查询字符串。

必需:是

类型FieldToMatch

Update requires: No interruption

PositionalConstraint

在您要搜索的 Web 请求部分中(例如,在有查询字符串时),指定您希望 AWS WAF 搜索的位置。有效值包括:

CONTAINS

Web 请求的指定部分必须包含 TargetString 值,但位置无关紧要。

CONTAINS_WORD

Web 请求的指定部分必须包含 TargetString 值,并且 TargetString 必须仅包含字母数字字符或下划线(A-Z、a-z、0-9 或 _)。此外,TargetString 必须是单词,这表示以下一种情况:

  • TargetString 与 Web 请求的指定部分的值精确匹配,如标头的值。

  • TargetString 处于 Web 请求的指定部分的开头,并且后跟字母数字字符或下划线 (_) 之外的字符(例如,BadBot;)。

  • TargetString 处于 Web 请求的指定部分的末尾,并且前面是字母数字字符或下划线 (_) 之外的字符(例如,;BadBot)。

  • TargetString 处于 Web 请求的指定部分的中间,并且前面和后面是字母数字字符或下划线 (_) 之外的字符(例如,-BadBot;)。

EXACTLY

Web 请求的指定部分的值必须与 TargetString 的值完全匹配。

STARTS_WITH

TargetString 的值必须位于 Web 请求的指定部分的开头。

ENDS_WITH

TargetString 的值必须位于 Web 请求的指定部分的结尾。

必需:是

类型:字符串

允许的值CONTAINS | CONTAINS_WORD | ENDS_WITH | EXACTLY | STARTS_WITH

Update requires: No interruption

TargetString

您希望 AWS WAF 搜索的值。AWS WAF 在您通过 FieldToMatch 指定的 Web 请求部分中搜索指定的字符串。值的最大长度为 50 个字节。

您必须指定此属性或 TargetStringBase64 属性。

有效值取决于您为 FieldToMatch 指定的值:

  • HEADER:您希望 AWS WAF 在您通过 FieldToMatch 指定的请求标头中搜索的值,例如 User-AgentReferer 标头的值。

  • METHOD:HTTP 方法,指示在请求中指定的操作的类型。CloudFront 支持以下方法:DELETEGETHEADOPTIONSPATCHPOSTPUT

  • QUERY_STRING:您希望 AWS WAF 在查询字符串中搜索的值,这是 URL 的显示在 ? 字符后的一部分。

  • URI:您希望 AWS WAF 在确定资源的 URL 部分中搜索的值,例如,/images/daily-ad.jpg

  • BODY:具体请求部分,其中包含要作为 HTTP 请求正文发送到 Web 服务器的任何附加数据(如表单数据)。请求正文紧跟请求标头。请注意,仅将请求正文前面的 8192 个字节转发到 AWS WAF 供检查。要根据正文的长度允许或阻止请求,您可以创建大小约束集。

  • SINGLE_QUERY_ARG:查询字符串中您将检查的参数,如 UserNameSalesRegionSINGLE_QUERY_ARG 的最大长度为 30 个字符。

  • ALL_QUERY_ARGS:类似于 SINGLE_QUERY_ARG,但 AWS WAF 不检查单个参数,而是在查询字符串中检查其值包含 TargetString 中所指定值或正则表达式模式的所有参数。

如果 TargetString 包含字母字符 A-Z 和 a-z,请注意,该值区分大小写。

必需:条件

类型:字符串

Update requires: No interruption

TargetStringBase64

AWS WAF 搜索的 base64 编码值。AWS CloudFormation 将此值发送到 AWS WAF,而不对其进行编码。

您必须指定此属性或 TargetString 属性。

AWS WAF 在 Web 请求的指定部分(在 FieldToMatch 属性中定义)中搜索此值。

有效值取决于 FieldToMatch 属性中的 Type 值。例如,对于 METHOD 类型,您必须指定 HTTP 方法,如 DELETE, GET, HEAD, OPTIONS, PATCH, POSTPUT

必需:条件

类型:字符串

Update requires: No interruption

TextTransformation

文本转换消除了一些不寻常的格式,可防范攻击者在 Web 请求中使用它们以试图绕过 AWS WAF。如果您指定一个转换,AWS WAF 将在 FieldToMatch 上执行该转换,然后再检查该转换是否匹配。

您只能指定一个类型的 TextTransformation。

CMD_LINE

如果您担心攻击者注入操作系统命令行命令并使用异常格式伪装部分或所有命令,使用此选项可执行以下转换:

  • 删除以下字符:\ " ' ^

  • 删除以下字符之前的空格:/ (

  • 将以下字符替换为空格:, ;

  • 将多个空格替换为一个空格

  • 将大写字母 (A-Z) 转换为小写字母 (a-z)

COMPRESS_WHITE_SPACE

使用此选项可将以下字符替换为空格字符(十进制 32):

  • \f,换页符,十进制 12

  • \t,制表符,十进制 9

  • \n,换行符,十进制 10

  • \r,回车符,十进制 13

  • \v,垂直制表符,十进制 11

  • 不间断空格,十进制 160

COMPRESS_WHITE_SPACE 还会将多个空格替换为一个空格。

HTML_ENTITY_DECODE

使用此选项可将 HTML 编码字符替换为未编码字符。HTML_ENTITY_DECODE 执行以下操作:

  • (ampersand)quot; 替换为 "

  • (ampersand)nbsp; 替换为不间断空格(十进制 160)

  • (ampersand)lt; 替换为“小于”符号

  • (ampersand)gt; 替换为 >

  • 将以十六进制格式表示的字符 (ampersand)#xhhhh; 替换为对应字符

  • 将以十进制格式表示的字符 (ampersand)#nnnn; 替换为对应字符

LOWERCASE

使用此选项可将大写字母 (A-Z) 转换为小写字母 (a-z)。

URL_DECODE

使用此选项可解码 URL 编码的值。

NONE

如果您不希望执行任何文本转换,请指定 NONE

必需:是

类型:字符串

允许的值CMD_LINE | COMPRESS_WHITE_SPACE | HTML_ENTITY_DECODE | LOWERCASE | NONE | URL_DECODE

Update requires: No interruption