使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何使用 AWS WAF 阻止特定文件扩展名上传?

2 分钟阅读
0

我想限制向 Web 服务器上传(HTTP POST 请求)具有特定扩展名的文件。

简短描述

分析 HTTP 请求的 POST 数据时,上传的内容可以是以下两种类型之一:

  • 表单数据
  • 二进制数据

注意: AWS WAF 会检查请求正文的前 8KB(8192 字节)。有关更大的正文请求的更多信息,请参阅 Handling oversize web request components in AWS WAF

要限制上传使用特定文件扩展名(例如,.pdf、.docx 或 .exe)的文件,请完成以下步骤:

  1. 创建自定义 Web 访问控制列表(Web ACL)规则以检查请求正文。
  2. 在规则中创建正则表达式匹配条件。使用此正则表达式模式配置规则以限制多个文件扩展名。
  3. 将规则操作设置为“阻止”。
  4. 定义规则优先级,使此自定义规则的优先级高于任何可以阻止此规则的 Web ACL 规则。
  5. 验证规则是否成功阻止特定的文件扩展名。

解决方法

确定 POST 数据使用的内容类型

HTTP 请求中的 POST 数据通常使用表单数据或二进制数据。

  • 表单数据包括用户在 HTTP 发送(或“发布”)到 Web 服务器的网页(或“HTML 表单”)上输入的任何数据。
  • 二进制负载是文本负载以外的任何数据。例如,二进制负载可以是 .jpeg 文件、.gzip 文件或 .xml 文件。这包括通用二进制数据,例如来自 .pdf 应用程序、.jpeg 图像或 .zip 应用程序的数据。有关所有文件扩展名类型,请参阅互联网编号分配机构(IANA)网站上的媒体类型

要确定 POST 请求的类型,请查看 HTTP POST 标头的 Content-Type 值。在以下示例中,Content-Typemultipart/form-data

Content-Type: multipart/form-data

如果标头“Content-Type”的值为“multipart/form-data”,请完成以下步骤以创建规则:

  1. 打开 AWS WAF 控制台

  2. 在导航窗格中的 AWS WAF 下,选择 Web ACL

  3. 对于区域,选择在其中创建了 Web ACL 的 AWS 区域。
    注意:如果为 Amazon CloudFront 设置了 Web ACL,请选择全局

  4. 选择您的 Web ACL。然后,选择规则选项卡。

  5. 选择添加规则下拉列表,然后选择添加我自己的规则和规则组

  6. 对于规则类型,选择规则生成器

  7. 名称中,输入名称以标识此规则。

  8. 对于类型,选择常规规则

  9. 对于如果请求,选择匹配****语句。然后,完成语句的以下字段
    对于检查,选择正文
    对于内容类型,选择 JSON
    对于** JSON 匹配范围**,选择
    对于请求正文中的 JSON 无效时 AWS WAF 应如何处理请求,根据您的用例选择相关选项。
    对于要检查的内容,选择完整 JSON 内容
    对于匹配类型,选择匹配正则表达式
    对于正则表达式,输入要匹配的正则表达式模式。请参阅以下示例:

    (?:.pdf|.doc|.docx|.ppt)
  10. (可选)对于文本转换,可以添加文本转换,也可以将这些字段保留为

  11. 对于超大尺寸处理,根据您的用例选择相关选项。

  12. 对于操作,选择阻止

  13. 选择添加规则

  14. (可选)对于设置规则优先级,选择您的规则并移动其优先级。AWS WAF 按照规则出现的顺序处理规则。有关详细信息,请参阅 Processing order of rules and rule groups in a web ACL

  15. 选择保存

验证规则是否按预期运行。

如果标头“Content-Type”具有二进制值,例如“application/pdf”或“application/ppt”请完成以下步骤以创建规则:

  1. 打开 AWS WAF 控制台

  2. 在导航窗格中的 AWS WAF 下,选择 Web ACL

  3. 对于区域,选择在其中创建了 Web ACL 的 AWS 区域。注意:如果为 Amazon CloudFront 设置了 Web ACL,请选择全局

  4. 选择您的 Web ACL。然后,选择规则选项卡。

  5. 选择添加规则下拉列表,然后选择添加我自己的规则和规则组

  6. 对于规则类型,选择规则生成器

  7. 名称中,输入名称以标识此规则。

  8. 对于类型,选择常规规则

  9. 对于如果请求,选择匹配****语句。然后,完成语句的以下字段:
    对于检查,选择单个标头
    对于标头字段名称,输入 Content-Type
    对于匹配类型,选择匹配正则表达式
    对于正则表达式,输入要匹配的正则表达式模式。
    对于 .pdf.jpeg 文件,请参阅以下示例:

    (?:pdf|jpeg)
  10. (可选)对于文本转换,可以添加文本转换,也可以将这些字段保留为

  11. 对于操作,选择阻止

  12. 选择添加规则

  13. (可选)对于设置规则优先级,选择您的规则并移动其优先级。AWS WAF 按照规则出现的顺序处理规则。有关详细信息,请参阅 Processing order of rules and rule groups in a web ACL

  14. 选择保存

  15. 验证规则是否按预期运行。

**注意:**要将规则限制为特定的上传 URI 路径,请在检查路径的 Web ACL 规则中使用 AND 语句

AWS 官方
AWS 官方已更新 1 年前