【開發筆記】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 美元實在是有點貴。諸位看官考慮要入坑者,不可不慎,不可不慎啊😅