使用 SQL 注入匹配条件 - Amazon WAFAmazon Firewall Manager、和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 SQL 注入匹配条件

注意

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

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

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

创建 SQL 注入匹配条件

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

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

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

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

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

注意

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

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

    如果您在导航窗格中看到 “切换到 Amazon 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 请求中您希望 Amazon WAF Classic 检查恶意 SQL 代码的部分:

标题

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

HTTP method

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

查询字符串

URL 中在 ? 字符之后出现的部分 (如果有)。

注意

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

URI

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

除非指定了转换,否则不会对 URI 进行标准化,而是像请求中从客户端 Amazon 接收的那样对其进行检查。转换 将按指定方式重新设置 URI 的格式。

Body

请求中包含要作为 HTTP 请求正文发送到 Web 服务器的任何附加数据 (如表单数据) 的部分。

注意

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

单一查询参数(仅限值)

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

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

所有查询参数(仅限值)

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

标题

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

Transformation

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

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

转换可以执行以下操作:

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

转换为小写形式

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

HTML decode

Amazon WAF Classic 用未编码的字符替换 HTML 编码的字符:

  • " 替换为 &

  •   替换为不间断空格

  • &lt; 替换为 <

  • &gt; 替换为 >

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

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

规范化空格

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

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

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

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

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

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

  • 不间断空格,十进制 160

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

Simplify command line

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

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

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

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

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

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

URL decode

解码 URL 编码的请求。

在 SQL 注入匹配条件中添加和删除筛选条件

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

在 SQL 注入匹配条件中添加或删除筛选条件
  1. 登录 Amazon Web Services Management Console 并打开 Amazon WAF 控制台,网址为 https://console.aws.amazon.com/wafv2/

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

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

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

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

    1. 选择 添加筛选条件

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

    3. 选择 添加

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

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

    2. 选择 删除筛选器

删除 SQL 注入匹配条件

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

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

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

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

  3. SQL injection match conditions 窗格中,选择要删除的 SQL 注入匹配条件。

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

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

  5. 要从使用某个 SQL 注入匹配条件的规则中将其删除,请执行以下步骤:

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

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

    3. 在右窗格中,选择要从规则中删除的 SQL 注入匹配条件,然后选择 Remove selected condition

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

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

    6. SQL injection match conditions 窗格中,选择要删除的 SQL 注入匹配条件。

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