【开发笔记】AWS WAF 功能强大但使用时小心荷包破洞
AWS WAF (Web Application Firewall) 功能强大,但是使用上有些眉角需要开发者特别注意。比较无伤大雅的,像是 metric name 不会随着 rule name 名称改变而跟着更新。而事情比较大条的,则是程式码对于被阻断请求的无限制重试。一不留意荷包就得破洞大失血了...
先说说 metric name
WAF 贴心地内建了统计图表。这让规则在制订时,比较能够直观地看出实际请求如何被防火墙,依据不同的规则设置而被分别处理。不过要小心,图表的 metric name 并不会随着规则名称的改变而跟着同步更新。一不留意的话,就会发现图表因为不同步的 metric name,而渐渐地越来越看不懂了。
不过解决的方式倒是挺容易的,就是进入规则的 JSON editor 来手动编辑就可以了。不知道这是 AWS WAF 的 BUG,还是说什么其他神奇的操作考量就不得而知。
吓死人的 b-img srcset
srcset 这事就挺吓人的。最一开始是因为发现新制定的规则竟然短短的几分钟内能够飙升到六万五千多次请求。后来调查才发现原来是 b-img 的 srcset 属性在作怪。
srcset 主要是让开发者可以提供不同规格尺寸的图片,使页面能根据浏览器视图的规格大小,自动选取合适的图片来显示。这功能本身没有什么毛病,但是一定要留意 @error,也就是载入发生错误时的 error handling 最好自己补上。避免默认的重试迅速消耗掉 WAF 的计次费用。
最后就是小小穷酸者的抱怨
对于采用 CloudFront 的网路架构来说,为了提高整体云端部署的安全性。使用 WAF 似乎是最迅速、直观,而且可靠的选择。不过对于小本经营,尚且还在摸索中的项目来说,一条规则每个月 5 美元实在是有点贵。诸位看官考虑要入坑者,不可不慎,不可不慎啊😅