You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS WAF限制表单仅允许特定文件扩展名上传?

解决AWS WAF限制文件上传扩展名的问题

问题根源

你之前的配置失效主要是三个原因:

  1. 直接匹配URI扩展名完全不对——文件上传请求的URI是表单提交的接口路径(比如/upload-form),不是文件名本身,所以根本匹配不到上传文件的扩展名,反而会误拦截带扩展名的静态资源(比如.js、.css)导致页面加载失败。
  2. 全局匹配multipart/form-data太宽泛——所有表单提交都会用这个Content-Type,包括不带文件的普通表单,所以这个规则根本没法区分是否是文件上传请求。
  3. 没限定规则的作用范围——规则应用到了所有请求上,而不是仅针对文件上传的接口。

正确配置步骤

1. 先锁定上传请求路径

创建一个匹配条件,只对专门处理文件上传的接口路径生效:

  • 选择请求URI作为匹配字段,用精确匹配或前缀匹配指定你的上传接口(比如/api/file-upload、/submit-document)
  • 把这个条件作为规则的前置过滤,确保后续的扩展名检查只作用在上传请求上,不会影响正常页面加载。

2. 检查multipart请求里的文件名

用WAF的Multipart匹配功能(WAFv2支持)来提取上传文件的文件名:

  • 选择Multipart body作为检查目标,开启检查文件名选项
  • 设置匹配类型为后缀匹配,添加你允许的扩展名(比如.pdf、.docx、.png),注意必须带点号
  • 规则动作设为允许;同时配置一条默认规则,对不符合上述条件的上传请求执行阻断动作。

3. 容错调整

  • 如果你的应用允许大小写混合的扩展名(比如.PDF或.pdf),开启忽略大小写选项
  • 如果存在文件名带特殊字符的情况,确保WAF的匹配逻辑支持(WAF默认会处理大部分常见特殊字符)

4. 验证测试

  • 用允许的扩展名文件上传,确认能正常提交
  • 用禁止的扩展名(比如.exe、.zip)测试,确认被WAF阻断
  • 同时访问正常页面,确认不会被拦截

额外提醒

  • 不要用URI扩展名匹配来处理文件上传——这个方法只适用于直接访问静态文件的场景
  • 务必限定规则的作用范围到上传接口,避免误杀正常请求

内容的提问来源于stack exchange,提问作者Aditya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 12:03:14