AWS WAF 在尝试上传图像时收到 403 禁止错误

问题描述 投票:0回答:6

我们在 ALB 之前启用了 AWS WAF 解决方案,并启用了 SQL 注入和 XSS 检测。我们尝试设置自定义规则来使用正则表达式检查内容类型是否为 multipart/form-data*。

我们已经设置了具有更高优先级的自定义规则。使用自定义规则时,会上传图像,但不禁止脚本标签。如果没有自定义规则,如果我们尝试上传图像,则单独一张特定图像不会上传并抛出 403 禁止。

有关添加 XSS 和自定义规则以允许图像上传的任何提示吗?

amazon-web-services xss amazon-waf
6个回答
10
投票

检查您的图像元数据。我最近遇到了这个问题,并在 ACL 日志中收到“GenericRFI_BODY”错误。事实证明,我上传的测试图像的 exif 数据中存在非法路径。在某些元数据字段中,有一个 URL 指向图像来自的站点,并且该 URL 中的“://”模式触发了规则。从图像中剥离元数据允许其上传。

我强烈反对使用 Base64 编码来规避防火墙规则。这将使文件的大小膨胀,并且 multipart/form-data 的存在专门用于从客户端到服务器来回传输大型二进制文件 - 而不是发布大量序列化文本块。

这是 RFC:https://www.ietf.org/rfc/rfc2388.txt


6
投票

转到您的 Web ACL 并单击编辑 AWS-AWSManagedRulesCommonRuleSet 并将规则 SizeRestrictions_BODY覆盖规则操作设置为True


3
投票

当我尝试将图像添加为多部分/表单数据时,我在 AWS 防火墙中遇到了 403 问题。

阻止图像上传的一些 WAF 规则包括 AWS#AWSManagedRulesSQLiRuleSet#SQLi_BODY、 AWS#AWSManagedRulesCommonRuleSet#GenericRFI_BODY 和 AWS#AWSManagedRulesCommonRuleSet#CrossSiteScripting_BODY。

我通过将图像上传为 base64 字符串而不是上传为 multipart/form-data 解决了这个问题。


0
投票

就我而言,这是由于以下 WAF 规则造成的:

ruleGroupList.0.ruleGroupId             AWS#AWSManagedRulesCommonRuleSet
ruleGroupList.0.terminatingRule.ruleId  SizeRestrictions_BODY

我通过将默认规则操作从

BLOCK
覆盖到
CHALLENGE

解决了这个问题

0
投票

我在尝试将文件作为 multipart/form-data 上传时遇到 403 Forbidden 错误,我按照这篇 aws 文章中的说明解决了这个问题 基本上,您需要添加一条新的 WAF 规则,其优先级高于之前的规则阻止了你(在我的例子中是 SizeRestrictions_BODY)


0
投票

解决了我的问题 转到您的 Web ACL 并单击编辑 AWS-AWSManagedRulesCommonRuleSet 并将规则 SizeRestrictions_BODY 的覆盖规则操作设置为 True

© www.soinside.com 2019 - 2024. All rights reserved.