问题描述
我在 AWS 中创建了一些资源以尝试创建 MRE,以展示如何使用 WAF 来防止将恶意请求发送到 API 网关 RestAPI。 我已经创建了
我已经在阶段级别将 RestAPI 与 WAF ACL 相关联。 WAF Web ACL 已配置为使用 AWS 托管规则 AWS-AWSManagedRulessqliRuleSet
sql 数据库规则组包含阻止请求模式的规则 与利用 sql 数据库相关联,例如 sql 注入 攻击。这有助于防止远程注入未经授权的 查询。如果您的应用程序,请评估此规则组以供使用 与 sql 数据库接口。
https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-list.html
配置如下所示的默认值
这是唯一的规则,选择了所有其他默认值,如下所示。
我已经创建了一个无服务器 api POST 资源端点,尽管已按上述方式配置了所有内容,但 WAF 不会阻止具有如下所示的有效负载/正文的请求。
{
"MyString":"SELECT username,password FROM Users"
}
为什么请求没有被 WAF 阻止?如何配置,以便在发送到 RestAPI 之前在 WAF 拒绝包含请求负载中的 sql 的请求?
我认为我上面的 sql 就足够了。那不是真的吗?我可以使用哪些 sql 代码来验证 WAF 和 AWS 托管规则是否按预期工作?什么逻辑可以解释为什么我上面的请求没有被阻止?
我还配置了 S3 日志记录,这里是 s3 日志中的 1 个记录的示例,表明该请求被允许
"timestamp": 1612921225458,"formatVersion": 1,"webaclId": "ABC","terminatingRuleId": "Default_Action","terminatingRuleType": "REGULAR","action": "ALLOW","terminatingRuleMatchDetails": [],"httpSourceName": "APIGW","httpSourceId": "ABC:ABC:Prod","ruleGroupList": [{
"ruleGroupId": "AWS#AWSManagedRulessqliRuleSet","terminatingRule": null,"nonTerminatingMatchingRules": [],"excludedRules": null
}
],"rateBasedRuleList": [],"requestHeadersInserted": null,"responseCodeSent": null,
我在这里做出的哪个假设不正确?
我想要一个 MRE,显示当帖子正文包含恶意 sql 时 WAF 如何拒绝请求,并返回 4xx 响应。我假设这是可以实现的。
更新 1:我尝试添加我自己的规则和规则组,使用规则构建器并专门查看请求正文。即使有了这些,它仍然不拒绝。
我为正文、查询字符串、路径添加了规则。尽管如此,请求没有被拒绝
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)