我想限制向 Web 服务器上传(HTTP POST 请求)具有特定扩展名的文件。
简短描述
分析 HTTP 请求的 POST 数据时,上传的内容可以是以下两种类型之一:
要限制带有特定扩展名(.pdf、.docx、.exe)的文件上传,您需要在 AWS WAF 中创建和配置自定义 Web 访问控制列表 (Web ACL) 规则。
注意: AWS WAF 会检查请求正文的前 8KB(8192 字节)。有关更大的正文请求的信息,请参阅 AWS WAF 中的超大 Web 请求组件。
解决方法
确定 POST 数据使用的内容类型
HTTP 请求中的 POST 数据通常使用表单数据或二进制数据。
- 表单数据包括用户在 HTTP 发送或发布到 Web 服务器的网页或 HTML 表单上输入的任何数据。
- 二进制有效载荷是文本有效载荷以外的任何数据。例如,二进制负载可以是 .jpeg 文件、.gzip 文件或 .xml 文件。这包括通用二进制数据,例如来自 .pdf 应用程序、.jpeg 图像或 .zip 应用程序的数据。有关所有文件扩展名类型,请参阅互联网编号分配机构 (IANA) 网站上的媒体类型。
要识别您的 POST 请求类型,请检查 HTTP POST 标头中的 Content-Type 值。例如:
Content-Type: multipart/form-data
根据您的 Content-Type 输出,查看与您的标头值相匹配的相应部分。
为多部分/表单数据内容创建规则
完成以下步骤:
- 打开 AWS WAF 控制台。
- 在导航窗格中,选择 AWS WAF。
- 选择 Resources & protection packs(资源和保护包)。
- 选择您的 Protection pack(保护包)。
- 在您选择的保护包中,选择 Rules(规则)。
- 选择 Rules(规则)旁边的 View and edit(查看和编辑)以查看或修改与您的保护包关联的规则。
- 在 Manage rules(管理规则)的右侧窗格中,选择 Add rules(添加规则)。
- 选择 Create new rule(创建新规则)。
- 选择 Custom rule(自定义规则),然后选择 Next(下一步)。
- 对于 Rule Type(规则类型),选择 Custom rule(自定义规则),然后选择 Next(下一步)。
- 要设置规则,请配置以下值:
对于 Action(操作),为自定义规则选择 Block(阻止)。
对于 Name(名称),请输入名称以标识此规则。
对于 If a request(如果请求),选择 Matches the statement(匹配语句)。然后,完成语句的以下字段:
对于 Inspect(检查),选择 JSON Body(JSON 正文)。
对于** JSON 匹配范围**,选择值。
对于 Action for invalid JSON body requests(无效 JSON 正文请求的操作),请选择适合您的选项。
对于要检查的内容,选择完整 JSON 内容。
对于匹配类型,选择匹配正则表达式。
对于正则表达式,输入要匹配的正则表达式模式。请参阅以下示例:
(?:.pdf|.doc|.docx|.ppt)
- (可选)对于 Text transformation(文本转换),请添加文本转换或将这些字段保留为 None(无)。
- 对于 Oversize Handling(超大处理),根据您的用例选择相关选项。
- 选择 Create Rule(创建规则)。
- 选择 Save(保存)。
为二进制值创建规则
完成以下步骤:
- 打开 AWS WAF 控制台。
- 在导航窗格中,选择 AWS WAF。
- 选择 Resources & protection packs(资源和保护包)。
- 选择您的 Protection pack(保护包)。
- 在您选择的保护包中,选择 Rules(规则)。
- 选择 Rules(规则)旁边的 View and edit(查看和编辑)以查看或修改与您的保护包关联的规则。
- 在 Manage rules(管理规则)的右侧窗格中,选择 Add rules(添加规则)。
- 选择 Create new rule(创建新规则)。
- 选择 Custom rule(自定义规则),然后选择 Next(下一步)。
- 对于 Rule Type(规则类型),选择 Custom rule(自定义规则),然后选择 Next(下一步)。
- 要设置规则,请配置以下值:
对于 Action(操作),为自定义规则选择 Block(阻止)。
对于 Name(名称),请输入名称以标识此规则。
对于 If a request(如果请求),选择 matches the statement(匹配语句)。
完成 Statement(语句)的以下字段:
对于检查,选择单个标头。
对于标头字段名称,输入 Content-Type。
对于匹配类型,选择匹配正则表达式。
对于正则表达式,输入要匹配的正则表达式模式。
对于 .pdf 和 .jpeg 文件,请参阅以下示例:
(?:pdf|jpeg)
- (可选)对于 Text transformation(文本转换),请添加文本转换或将这些字段保留为 None(无)。
- 选择 Create Rule(创建规则)。
**注意:**要将规则限制为特定的上传 URI 路径,请在检查路径的 Web ACL 规则中使用 AND 语句。