我们的应用程序安装在 Amazon Web Services 上,位于 ALB(应用程序负载均衡器)后面,并配有 AWS WAF(Web 应用程序防火墙)。WAF 包含一条规则,可使用 Amazon 提供的一组条件来阻止 SQL 注入尝试。
问题在于系统中的某些表单字段设计用于通用注释,而 WAF 在过滤此类输入时过于激进。以下是示例注释:
这句话中不应该有多个“and”
提交此请求的表单由于“and”(包括引号)而被阻止(403 Forbidden)。
有没有办法修改我们的应用程序或 WAF 配置以防止它阻止这些类型的请求?
我们过去曾遇到过多起广泛的 SQL 注入探测攻击,因此,虽然我们已集中精力修补应用程序级别的任何安全漏洞,但我们确实希望能够将 WAF 作为整个应用程序的额外保护层。
答案1
所以我找到的解决方案是添加白名单规则。基本上,我为这个特定请求的 URI 创建了一个字符串匹配条件,用它创建了一个新的“白名单”规则,并将其添加为我的 ACL 中的第一个规则,并将“允许”作为操作。我的理解是,这意味着对此 URI 的请求会自动通过,并且不会针对列表中较低的 SQL 注入规则进行测试。这确实有效 - 我可以向相关页面提交 SQL 注入的字符串,但其他页面仍然受到保护。
显然,我需要格外小心,以确保相关页面不易受到此类攻击,但我会在应用程序的其余部分保留保护层。
如果有人能描述更好的解决方案,我仍然愿意接受另一个答案。