使用SQL进样匹配条件 - AWS WAFAWS Firewall Manager、和 AWS Shield Advanced

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用SQL进样匹配条件

警告

AWS WAF 经典支持将于 2025 年 9 月 30 日结束。

注意

这是 AWS WAF Classic 文档。只有在 2019 年 11 月 AWS WAF 之前创建了诸如规则和 Web ACLs 之类的 AWS WAF 资源,并且尚未将其迁移到最新版本时,才应使用此版本。要迁移您的网站ACLs,请参阅将您的 AWS WAF 经典资源迁移到 AWS WAF

有关的最新版本 AWS WAF,请参阅AWS WAF

攻击者有时会在 Web 请求中插入恶意SQL代码,试图从您的数据库中提取数据。要允许或阻止看似包含恶意SQL代码的 Web 请求,请创建一个或多个SQL注入匹配条件。SQL注入匹配条件用于标识您希望 C AWS WAF lassic 检查的 Web 请求部分,例如URI路径或查询字符串。稍后,在创建网站时ACL,您可以指定是允许还是阻止看似包含恶意SQL代码的请求。

创建SQL进样匹配条件

创建SQL注入匹配条件时,需要指定过滤器,这些过滤器指明希望 C AWS WAF lassic 检查的 Web 请求中是否存在恶意SQL代码,例如URI或查询字符串。您可以向一个SQL进样匹配条件添加多个过滤器,也可以为每个过滤器创建单独的条件。以下是每种配置如何影响 AWS WAF 经典行为:

  • 每个SQL注入匹配条件不止一个过滤器(推荐)— 当您在规则中添加包含多个过滤器的SQL注入匹配条件并将该规则添加到 Web 时ACL,Web 请求只需要匹配SQL注入匹配条件中的一个过滤器,Cl AWS WAF assic 即可根据该条件允许或阻止请求。

    例如,假设您创建了一个SQL进样匹配条件,并且该条件包含两个过滤器。一个过滤器指示 AWS WAF Classic 检查是否存在恶意SQL代码,另一个过滤器指示 AWS WAF Classic 检查查询字符串。URI AWS WAF 如果请求在或查询字符串中似乎包含恶意SQL代码,Classic 会允许URI阻止这些请求。

  • 每个SQL注入匹配条件一个过滤器-将单独的SQL注入匹配条件添加到规则并将该规则添加到 Web 时ACL,Web 请求必须匹配所有条件,Cl AWS WAF assic 才能根据条件允许或阻止请求。

    假设您创建两个条件,每个条件包含前面示例中的两个筛选条件中的一个。当您将两个条件添加到同一个规则并将该规则添加到 Web 时ACL, AWS WAF Classic 仅在URI和查询字符串都显示包含恶意SQL代码时才允许或阻止请求。

注意

向规则添加SQL注入匹配条件时,还可以将 Cl AWS WAF assic 配置为允许或阻止看似包含恶意SQL代码的 Web 请求。

创建SQL进样匹配条件
  1. 登录 AWS Management Console 并打开 AWS WAF 控制台,网址为https://console.aws.amazon.com/wafv2/

    如果您在导航窗格中看到 “切换到 AWS WAF 经典版”,请将其选中。

  2. 在导航窗格中,选择SQL注入

  3. 选择 创建条件

  4. 指定适用的筛选条件设置。有关更多信息,请参阅 您在创建或编辑SQL进样匹配条件时指定的值

  5. 选择 再添加一个筛选条件

  6. 如果要添加其他筛选条件,请重复步骤 4 和 5。

  7. 添加完筛选器后,选择 创建

您在创建或编辑SQL进样匹配条件时指定的值

创建或更新SQL注入匹配条件时,需要指定以下值:

名称

SQL注入匹配条件的名称。

该名称只能包含字母数字字符(A-Z、a-z、0-9)或以下特殊字符:_-!"#`+*},./。条件的名称在创建后不可更改。

Part of the request to filter on

选择每个 Web 请求中您希望 AWS WAF Classic 检查恶意SQL代码的部分:

标题

指定的请求标头,例如 User-AgentReferer 标头。如果选择 Header,则在 Header 字段中指定标头的名称。

HTTP方法

HTTP方法,它表示请求请求源执行的操作类型。CloudFront 支持以下方法:DELETEGETHEADOPTIONSPATCHPOST、和PUT

查询字符串

出现在?角色之URL后的部分(如果有)。

注意

对于SQL注入匹配条件,我们建议您选择 “所有查询参数(仅限值)”,而不是 “查询字符串” 来筛选请求的一部分

URI

请求的URI路径,用于标识资源,例如/images/daily-ad.jpg。这不包括的查询字符串或片段组件URI。有关信息,请参见统一资源标识符 (URI):通用语法

除非指定了转换,否则不会URI对变换进行标准化,并且 AWS 会像在请求中从客户端收到变换一样进行检查。转换将URI按照指定的方式重新格式化。

Body

请求中包含您要作为请求正文发送到 Web 服务器的任何其他数据(例如来自表单的数据)的部分。HTTP

注意

如果选择正文作为要作为筛选条件的请求部分 的值,则 AWS WAF Classic 只检查前 8192 个字节 (8 KB)。要允许或阻止正文长度超过 8192 个字节的请求,可以创建大小约束条件。(AWS WAF Classic 从请求标头中获取正文的长度。) 有关更多信息,请参阅 使用大小约束条件

单一查询参数(仅限值)

您已定义为查询字符串的一部分的任何参数。例如,如果URL是 “www.xyz.com?UserName=abc& SalesRegion =seattle”,则可以向或参数添加过滤器。UserNameSalesRegion

如果您选择 单一查询参数(仅限值),您还将指定 查询参数名称。这是您要检查的查询字符串中的参数,例如UserNameSalesRegion查询参数名称 的最大长度为 30 个字符。查询参数名称 不区分大小写。例如,如果您指定UserName查询参数名称,它将匹配的所有变体 UserName,例如用户名U sERName

所有查询参数(仅限值)

单一查询参数(仅限值)类似,但C AWS WAF lassic不会检查单个参数的值,而是检查查询字符串中所有参数的值是否存在可能的恶意SQL代码。例如,如果URL是 “www.xyz.com?UserName=abc& SalesRegion =seattle”,并且您选择了所有查询参数(仅限值),则如果其中一个或的值包含可能的恶意代码,C AWS WAF lassic 将触发匹配。UserNameSalesRegionSQL

标题

如果您为要筛选的部分请求选择了标头,请从常用标头列表中选择标头,或者输入希望 C AWS WAF lassic 检查是否存在恶意SQL代码的标头的名称。

Transformation

在 C AWS WAF lassic 检查请求之前,转换会重新格式化 Web 请求。这消除了攻击者为了绕过 C AWS WAF lassic 而在 Web 请求中使用的一些不寻常的格式。

您只能指定一个类型的文本转换。

转换可以执行以下操作:

AWS WAF 在检查 Valu e 中的字符串是否匹配之前,Classic 不会对 Web 请求执行任何文本转换。

转换为小写形式

AWS WAF 经典版将大写字母 (A-Z) 转换为小写字母 (a-z)。

HTML解码

AWS WAF Classic 将HTML编码字符替换为未编码的字符:

  • " 替换为 &

  •   替换为不间断空格

  • &lt; 替换为 <

  • &gt; 替换为 >

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

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

规范化空格

AWS WAF Classic 将以下字符替换为空格字符(十进制 32):

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

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

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

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

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

  • 不间断空格,十进制 160

此外,此选项将多个空格替换为一个空格。

Simplify command line

对于包含操作系统命令行命令的请求,使用此选项可执行以下转换:

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

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

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

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

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

URL解码

对经过编码的请求进行解URL码。

在SQL注入匹配条件下添加和删除过滤器

可以在SQL注入匹配条件下添加或删除过滤器。要更改筛选条件,请添加一个新筛选条件并删除旧条件。

在SQL进样匹配条件下添加或删除过滤器
  1. 登录 AWS Management Console 并打开 AWS WAF 控制台,网址为https://console.aws.amazon.com/wafv2/

    如果您在导航窗格中看到 “切换到 AWS WAF 经典版”,请将其选中。

  2. 在导航窗格中,选择SQL注入

  3. 选择要在其中添加或删除筛选条件的条件。

  4. 要添加筛选条件,请执行以下步骤:

    1. 选择 添加筛选条件

    2. 指定适用的筛选条件设置。有关更多信息,请参阅 您在创建或编辑SQL进样匹配条件时指定的值

    3. 选择添加

  5. 要删除筛选条件,请执行以下步骤:

    1. 选择要删除的筛选条件。

    2. 选择 删除筛选器

删除SQL注入匹配条件

如果要删除SQL注入匹配条件,则需要先删除该条件中的所有过滤器,然后从使用该条件的所有规则中删除该条件,如以下过程所述。

删除SQL进样匹配条件
  1. 登录 AWS Management Console 并打开 AWS WAF 控制台,网址为https://console.aws.amazon.com/wafv2/

    如果您在导航窗格中看到 “切换到 AWS WAF 经典版”,请将其选中。

  2. 在导航窗格中,选择SQL注入

  3. SQL进样匹配条件窗格中,选择要删除的SQL进样匹配条件。

  4. 在右窗格中,选择 关联的规则 选项卡。

    如果使用此SQL注入匹配条件的规则列表为空,请转到步骤 6。如果列表中包含任何规则,则记下这些规则,然后继续执行步骤 5。

  5. 要从使用SQL注入匹配条件的规则中移除该条件,请执行以下步骤:

    1. 在导航窗格中,选择规则

    2. 选择使用您要删除的SQL注入匹配条件的规则的名称。

    3. 在右侧窗格中,选择要从规则中删除的SQL注入匹配条件,然后选择 “移除选定条件”。

    4. 对于使用要删除的SQL注入匹配条件的所有其余规则,重复步骤 b 和 c。

    5. 在导航窗格中,选择SQL注入

    6. SQL进样匹配条件窗格中,选择要删除的SQL进样匹配条件。

  6. 选择 删除 删除所选条件。