本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用字符串匹配条件
这是Amazon WAFClassic文档中)。仅当 2019 年 11 月之前在 Amazon WAF 中创建了 Amazon WAF 资源(例如规则和 Web ACL),但尚未将这些资源迁移到最新版本时,才应使用此版本。要迁移您的资源,请参阅迁移您的Amazon WAF适用于的经典资源Amazon WAF。
对于最新版本的Amazon WAF请参阅Amazon WAF.
如果要基于出现在请求中的字符串允许或阻止 Web 请求,请创建一个或多个字符串匹配条件。字符串匹配条件确定要搜索的字符串,以及应搜索的 Web 请求部分 (如指定标头或查询字符串)。Amazon WAF经典来检查字符串。在这个过程中的稍后阶段,在创建 Web ACL 时,需要指定是允许还是阻止包含该字符串的请求。
创建字符串匹配条件
创建字符串匹配条件时,需要指定筛选条件以确定要搜索的字符串以及应对 Web 请求的部分。Amazon WAFClassic (经典) 可检查该字符串,如 URI 或查询字符串。您可以将多个筛选条件添加到字符串匹配条件,也可以为每个筛选条件创建单独的字符串匹配条件。下面是每种配置影响的方式Amazon WAF经典行为:
每个字符串匹配条件一个筛选— 将单独的字符串匹配条件添加到一个规则并将该规则添加到一个 Web ACL 时,Web 请求必须与所有条件匹配,Amazon WAF这样,您可以根据条件允许或阻止任何请求。
例如,假设您创建两个条件。一个条件与
User-Agent标头中包含值BadBot的 Web 请求匹配。另一个条件与查询字符串中包含值BadParameter的 Web 请求匹配。将这两个条件添加到同一个规则并将该规则添加到 Web ACL 时,Amazon WAF仅当请求包含两个值时,Classic 才允许或阻止请求。每个字符串匹配条件有多个筛选条件— 将包含多个筛选条件的字符串匹配条件添加到一个规则并将该规则添加到一个 Web ACL 时,Web 请求只需与字符串匹配条件中的一个筛选条件匹配,Amazon WAF这样,您可以根据一个条件允许或阻止请求。
假设您创建一个而不是两个条件,并且这一个条件包含与前面示例相同的两个筛选条件。Amazon WAF如果包含 Classic 允许或阻止请求或者
BadBot中的User-Agent标题要么BadParameter在查询字符串中。
将字符串匹配条件添加到规则时,您还可以将配置。Amazon WAF经典允许或阻止网络请求不要匹配条件中的值。
创建字符串匹配条件
登录到Amazon Web Services Management Console打开Amazon WAF控制台https://console.aws.amazon.com/wafv2/
. 如果您看到切换到Amazon WAFClassic在导航窗格中,选择它。
在导航窗格中,选择 String and regex matching。
选择 Create condition (创建条件)。
指定适用的筛选条件设置。有关更多信息,请参阅 创建或编辑字符串匹配条件时指定的值。
选择 Add filter。
如果要添加其他筛选条件,请重复步骤 4 和 5。
添加完筛选器后,选择 Create。
创建或编辑字符串匹配条件时指定的值
创建或更新字符串匹配条件时,需要指定以下值:
- 名称
为字符串匹配条件输入名称。该名称只能包含字母数字字字字字字字字符 (A-Z、0-9) 以及以下特殊字符:_-!” #`+*}, ./。 条件的名称在创建后不可更改。
- 类型
选择 String match。
- Part of the request to filter on
选择应对每个 Web 请求的部分。Amazon WAF检查您在中指定的字符串的 ClassicValue to match:
- 标头
指定的请求标头,例如
User-Agent或Referer标头。如果选择 Header,则在 Header 字段中指定标头的名称。- HTTP method
HTTP 方法,指示请求要求源执行的操作的类型。CloudFront 支持以下方法:
DELETE、GET、HEAD、OPTIONS、PATCH、POST和PUT。- 查询字符串
URL 中在
?字符之后出现的部分 (如果有)。- URI
例如,请求的 URI 路径,用于标识资源,
/images/daily-ad.jpg. 这不包括 URI 的查询字符串或片段组件。想要了解有关信息,请参阅统一资源标识符 (URI):通用语法. 除非指定了 Transformation (转换),否则 URI 不会被标准化,并且会被检查,就像 Amazon 是作为请求的一部分从客户端收到它一样。Transformation (转换) 将按指定方式重新设置 URI 的格式。
- Body
请求中包含要作为 HTTP 请求正文发送到 Web 服务器的任何附加数据 (如表单数据) 的部分。
注意 如果选择Body对于的价值Part of the request to filter on、Amazon WAFClassic 只检查前 8192 个字节 (8 KB)。要允许或阻止正文长度超过 8192 个字节的请求,可以创建大小约束条件。(Amazon WAFClassic 会从请求标头获取正文的长度。) 有关更多信息,请参阅 使用大小约束条件。
- 单一查询参数(仅限值)
您已定义为查询字符串的一部分的任何参数。例如,如果 URL 为“www.xyz.com?UserName=abc&SalesRegion=seattle”,您可以向 UserName 或 SalesRegion 参数添加一个筛选条件。
如果查询字符串中出现重复的参数,求出的值将为“OR”。也就是说,任一个值都将触发匹配。例如,在 URL“www.xyz.com?SalesRegion=boston&SalesRegion=seattle”中,Value to match (要匹配的值) 中无论是“boston”还是“seattle”,都会触发匹配。
如果您选择 Single query parameter (value only) (单一查询参数(仅限值)),您还将指定 Query parameter name (查询参数名称)。这是查询字符串中您将检查的参数,如 UserName 或 SalesRegion。Query parameter name (查询参数名称) 的最大长度为 30 个字符。Query parameter name (查询参数名称) 不区分大小写。例如,如果您指定 UserName 作为 Query parameter name (查询参数名称),这将匹配 UserName 的所有变体,如 username 和 UsERName。
- 所有查询参数(仅限值)
与相似单一查询参数(仅限值),而不是检查单个参数的价值,Amazon WAFClassic 检查查查查询字符串中所有参数的值,以获取Value to match. 例如,如果 URL 是 “www.xyz. comUSERNAME=ABC & SalesRegion = 西雅图”,然后选择所有查询参数(仅限值)、Amazon WAF如果两者的值之一,Classic 将触发匹配UserName要么SalesRegion被指定为Value to match.
- Header (仅当“Part of the request to filter on”是“Header”时)
如果你选择了标头来自 的Part of the request to filter on列表中,从常见标头列表中选择标头,或输入应选择标头的名称。Amazon WAF经典检查。
- Match type
在您想要的请求部分内容中Amazon WAF经典来检查,选择字符串的位置Value to match必须看起来与此过滤器匹配:
- Contains
字符串在请求的指定部分中的任何位置出现。
- Contains word
Web 请求的指定部分必须包含 Value to match,并且 Value to match 必须仅包含字母数字字符或下划线 (A-Z、a-z、0-9 或 _)。此外,Value to match 必须是单词,这表示以下一种情况:
Value to match 与 Web 请求的指定部分的值精确匹配,如标头的值。
Value to match 处于 Web 请求的指定部分的开头,并且后跟字母数字字符或下划线 (_) 之外的字符 (例如,
BadBot;)。Value to match 处于 Web 请求的指定部分的末尾,并且前面是字母数字字符或下划线 (_) 之外的字符 (例如,
;BadBot)。Value to match 处于 Web 请求的指定部分的中间,并且前面和后面是字母数字字符或下划线 (_) 之外的字符 (例如,
-BadBot;)。
- Exactly matches
字符串和请求的指定部分的值是相同的。
- 从 开始
字符串出现在请求的指定部分的开头。
- Ends with
字符串出现在请求的指定部分的末尾。
- Transformation
转换之前重新格式化 Web 请求Amazon WAFClassic 会检查请求。这可消除一些不寻常的格式,可防范攻击者在 Web 请求中使用它们以试图绕过。Amazon WAFClassic。
您只能指定一个类型的文本转换。
转换可以执行以下操作:
- None(无)
Amazon WAFClassic 在针对中的字符串检查 Web 请求之前,不会对它执行任何文本转换。Value to match.
- Convert to lowercase
Amazon WAF将大写字母 (A-Z) 转换为小写字母 (a-z)。
- HTML decode
Amazon WAFClassic 将 HTML 编码的字符替换为未编码的字符:
将
"替换为&将
替换为不间断空格将
<替换为<将
>替换为>将以十六进制格式表示的字符
&#xhhhh;替换为对应字符将以十进制格式表示的字符
&#nnnn;替换为对应字符
- 规范化空格
Amazon WAFClassic 将以下字符替换为空格字符(十进制 32):
\f,换页符,十进制 12
\t,制表符,十进制 9
\n,换行符,十进制 10
\r,回车符,十进制 13
\v,垂直制表符,十进制 11
不间断空格,十进制 160
此外,此选项将多个空格替换为一个空格。
- Simplify command line
如果您担心攻击者注入操作系统命令行命令并使用异常格式伪装部分或所有命令,使用此选项可执行以下转换:
删除以下字符:\ " ' ^
删除以下字符之前的空格:/ (
将以下字符替换为空格:, ;
将多个空格替换为一个空格
将大写字母 (A-Z) 转换为小写字母 (a-z)
- URL decode
解码 URL 编码的请求。
- Value is base64 encoded
如果 Value to match 中的值进行了 base64 编码,则选中此复选框。使用 base64 编码可指定攻击者在其请求中包含的不可打印的字符 (如制表符和换行符)。
- Value to match
指定您想要的值Amazon WAF在 Web 请求中搜索的经典。最大长度为 50 个字节。如果要对值进行 base64 编码,则 50 字节的最大长度适用于编码之前的值。
在字符串匹配条件中添加和删除筛选条件
您可以将筛选条件添加到字符串匹配条件或删除筛选条件。要更改筛选条件,请添加一个新筛选条件并删除旧条件。
在字符串匹配条件中添加或删除筛选条件
登录到Amazon Web Services Management Console打开Amazon WAF控制台https://console.aws.amazon.com/wafv2/
. 如果您看到切换到Amazon WAFClassic在导航窗格中,选择它。
在导航窗格中,选择 String and regex matching。
选择要在其中添加或删除筛选条件的条件。
要添加筛选条件,请执行以下步骤:
选择 Add filter。
指定适用的筛选条件设置。有关更多信息,请参阅 创建或编辑字符串匹配条件时指定的值。
选择 Add(添加)。
要删除筛选条件,请执行以下步骤:
选择要删除的筛选条件。
选择 Delete Filter。
删除字符串匹配条件
如果要删除某个字符串匹配条件,需要先删除该条件中的所有筛选条件,然后从使用该条件的所有规则中将其删除,如以下过程中所述。
删除字符串匹配条件
登录到Amazon Web Services Management Console打开Amazon WAF控制台https://console.aws.amazon.com/wafv2/
. 如果您看到切换到Amazon WAFClassic在导航窗格中,选择它。
从使用某个字符串匹配条件的规则中删除该条件:
在导航窗格中,选择 Rules (规则)。
选择使用要删除的字符串匹配条件的规则的名称。
在右窗格中,选择 Edit rule。
选择要删除的条件旁边的 X。
选择 Update(更新)。
对使用要删除的字符串匹配条件的所有其余规则重复这些步骤。
从要删除的条件中删除筛选条件:
在导航窗格中,选择 String and regex matching。
选择要删除的字符串匹配条件的名称。
在右窗格中,选中 Filter 旁边的复选框来选择所有筛选条件。
选择 Delete filter。
在导航窗格中,选择 String and regex matching。
在 String and regex match conditions 窗格中,选择要删除的字符串匹配条件。
选择 Delete 删除所选条件。