觀點 · 資訊分享

AWS WAF 防機器人不必再改網頁:CloudFront 自動幫每一頁塞好偵測腳本,但壓縮與分段下載會跟著變

AWS WAF 的機器人與詐騙防護需要網頁載入一段 JavaScript,以前得自己一頁一頁加。現在 CloudFront 可以在送出 HTML 時自動插入,不用改程式、不另收費,但會影響壓縮、分段下載與 CSP 設定。

發布
2026-10-31
篇幅
約 5 分鐘 · 2,205 字
結構
7 節 + 4 題常見問題
標籤
#AWS WAF#Amazon CloudFront#Bot Control#網站資安
AWS WAF 防機器人不必再改網頁:CloudFront 自動幫每一頁塞好偵測腳本,但壓縮與分段下載會跟著變

一句話看懂:AWS WAF 的防機器人、防盜帳號功能需要網頁載入一段偵測腳本,現在 CloudFront 可以在送出網頁時自動幫你插入,不用改程式,但會連帶改變壓縮與下載行為。

CloudFront 自動插入 WAF 腳本資訊圖卡:開一個設定,CloudFront 就在每個 HTML 頁面自動加上 WAF 偵測腳本

先用白話講:WAF 的 JavaScript SDK 是什麼?

想像一間百貨公司請了保全在門口檢查來客。光看外表很難分辨誰是真正的客人、誰是來搶限量商品的黃牛集團,所以保全請每位客人在入口拿一張「識別貼紙」,貼紙上會記錄這個人的一些行為特徵,之後在店裡走動時,保全看貼紙就知道要不要多注意。

AWS WAF(網站應用程式防火牆)就是這位保全,而 JavaScript SDK 就是那張貼紙:它在訪客的瀏覽器裡跑,收集訊號、換取一個權杖,讓 WAF 判斷對方是真人還是自動化程式。

問題是,貼紙要有人在每個入口發。以前這件事得由開發者自己在每一個網頁加上一行 script 標籤。

發生什麼事

AWS 在 10 月 30 日宣布 AWS WAF 的「自動 SDK 整合」:

  • 開啟後,CloudFront 在送出 HTML 時自動加上 WAF SDK 的 script 標籤,不用改程式碼、建置流程或部署方式
  • 適用三組受管規則:Bot Control(targeted 檢查等級)、帳號盜用防護 ATP、假帳號註冊防護 ACFP
  • 不另收費
  • 在主控台新建、含上述規則的 web ACL 預設開啟;用 CLI、SDK、CDK、CloudFormation 建立的預設關閉;既有的 web ACL 不受影響

官方也點出以前的痛點:常見的設定錯誤是「WAF 那邊開了防護,網頁那邊卻忘了埋腳本」,等於白開。

開之前要先知道的副作用

開發者指南列了不少限制,以下是最容易踩到的幾個:

項目 官方說明
哪些頁面會被插入 只有狀態碼 200、Content-Type: text/html 的回應
壓縮 CloudFront 會向原站要未壓縮內容;原站硬回壓縮檔就不插入
分段下載 會移除 Range 標頭、改回傳整個檔案,影音與續傳下載的流量會增加
快取 已在快取裡的舊頁面要等過期或手動清除才會生效
指定頁面 不能依路徑設定,要排除就讓原站回傳 Cache-Control: no-transform
CSP 頁面的內容安全政策必須允許 SDK 載入與發出請求

給開發者的技術細節

  • 插入位置:緊接在開頭的 <head> 標籤之後。CloudFront 只掃描回應開頭的幾 KB,而且是快速的位元組掃描、不是完整解析 HTML,所以前面若有被註解掉的 <head>,標籤可能被插錯地方
  • 編碼:只支援與 ASCII 相容的編碼,UTF-16、UTF-32 的文件不會被修改
  • 單頁應用(SPA):CloudFront 用 200 回傳的自訂錯誤頁也會被插入,包含 SPA 常用的深層連結備援頁
  • 不會插入的情況:被規則擋下、收到 CAPTCHA 或 Challenge、WAF 自訂回應,以及 CloudFront Functions 產生的回應
  • 壓縮建議:在快取行為裡開啟 CloudFront 自動壓縮,才能繼續送壓縮檔給訪客
  • 設定可用主控台、CLI、SDK、CDK、CloudFormation 調整,API 欄位在 AssociationConfig

如果原站有設 CSP,記得先在測試環境開啟、確認瀏覽器主控台沒有被擋的錯誤再上正式環境。

我的看法

接案做網站時,「改版後漏掉某段追蹤或防護腳本」是很常見的事,尤其頁面是由別的系統產生(例如電商平台、行銷頁工具)時,根本沒辦法自己去改模板。這個功能把這件事搬到 CDN 那一層處理,對已經在用 Bot Control 或 ATP 的團隊來說很實用。

不過我會特別提醒兩件事:第一,影音和大檔下載會受影響,網站如果有放教學影片、可續傳的下載檔,開之前要先估一下流量;第二,CSP 和快取一定要先在測試環境走過一次。小網站如果還沒用到這三組付費規則,這次更新跟你關係不大,不需要為了它特地去開。

名詞小辭典

  • WAF(Web Application Firewall):網站應用程式防火牆,專門檢查進入網站的請求,擋掉攻擊與惡意機器人。
  • CloudFront:AWS 的 CDN(內容傳遞網路),把網站內容放在離使用者較近的節點,加快載入速度。
  • web ACL:AWS WAF 的一組規則設定,綁在 CloudFront 等服務上,決定哪些請求放行、哪些攔下。
  • CSP(Content Security Policy):網頁的安全政策,規定瀏覽器只能從哪些來源載入腳本,避免被插入惡意程式。

資料來源

常見問題

這個 JavaScript SDK 是做什麼的?
它在使用者的瀏覽器裡收集一些訊號並換取一個權杖,讓 AWS WAF 判斷來訪的是真人瀏覽器還是自動化程式。Bot Control 的 targeted 等級和兩組防詐騙規則都要靠它才能完整運作。
我已經有在用 WAF,會被自動打開嗎?
不會。官方寫明在這次更新之前建立的 web ACL 維持原狀;只有在主控台新建、而且含有那三組規則的 web ACL 才會預設開啟。用 CLI、CDK、CloudFormation 等程式方式建立時預設是關閉的。
可以只讓某些頁面不要插入嗎?
設定本身是整個 web ACL 一起生效,不能指定路徑。要讓特定頁面不插入,請原站對那些頁面回傳 Cache-Control: no-transform 標頭。
開了之後網站會變慢嗎?
官方說明 CloudFront 為了插入標籤,會向原站要未壓縮的內容,建議在快取行為裡開啟 CloudFront 壓縮,才能繼續送壓縮過的檔案給訪客。另外分段下載會變成整個檔案重抓,影音和大檔下載的流量可能增加。
LINE