AWS WAF 在尝试上传图像时出现 403 禁止错误

AWS WAF Getting 403 forbidden error while trying to upload an image

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

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

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

当我尝试将图像添加为 multipart/form-data 时,我在 AWS 防火墙中遇到了 403 问题。

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

我通过将图像上传为 base64 字符串而不是上传为 multipart/form-data.

解决了这个问题

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

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

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

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