您希望在不會阻止或破壞任何合法流量的情況下增強(qiáng)您的API的性能和安全性。使用 Page Rule 配置 Cloudflare 可以確保 API 獲得所有好處,甚至在不使用瀏覽器的情況下也能正常工作。有關(guān)如何創(chuàng)建 Page Rule 的步驟。
為什么要這樣做?
Cloudflare 提供了許多安全功能,以幫助抵御攻擊。其中一些功能可通過向請求添加插頁式檢測或要求從 Web 瀏覽器發(fā)出請求,以限制潛在有害的訪問者訪問您的網(wǎng)站。
由于 API 請求 通常不會使用瀏覽器發(fā)出,因此我們建議您為 API 的 URL 模式創(chuàng)建 Page Rule,以確保這些功能不會限制對 API 的訪問。
請注意,如果 API 的源服務(wù)器和您的網(wǎng)頁服務(wù)器是同一個,則禁用或降低安全功能會為潛在攻擊者提供攻擊您域名的可能。
匹配模式
第一步是將 URL 設(shè)置為包含對 API 的所有請求。例如,如果您的 API 功能與 Cloudflare v4 API 類似,則所有請求都會發(fā)送到一個 URL https://api.cloudflare.com/client/v4/ ,因此匹配模式將是 https://api.cloudflare.com/client/v4/*。如果您的 API 使用多個 URL,則可以使用星號(*)作為通配符,以使模式與多個 URL 匹配。例如,對 Zendesk v2 API 的請求以 https://{subdomain}.zendesk.com/api/v2/ 開頭,其中通配符可用于子域和 /v2/ 之后請求的文件,如:https://*.zendesk.com/api/v2/*。
Page Rule 設(shè)置
第二步是配置 Cloudflare 的 Page Rule 功能,以盡量減少對 API 的影響。
Cache Level:Bypass 由于可以預(yù)期每個請求和響應(yīng)都不同,因此將 Cache Level 設(shè)置為 Bypass 會阻止緩存返回給訪問者的任何響應(yīng)。
Always Online:Off Always Online 功能可在源站脫機(jī)時返回緩存內(nèi)容。針對 API 規(guī)則禁用 Always Online 可確保不會從 Cloudflare 的緩存提供響應(yīng)。
Web Application Firewall:Off 我們的Web Application Firewall web application firewall(WAF),對于付費用戶都是可用的。對 API 的某些調(diào)用可能會觸發(fā) WAF 中的規(guī)則,從而導(dǎo)致請求被錯誤攔截。我們建議至少在最初啟用 WAF,以查看這些請求是否觸發(fā)了 WAF 規(guī)則。通過以下鏈接訪問 WAF 設(shè)置和log頁面,您可以查看已觸發(fā)的記錄:https://www.cloudflare.com/a/firewall/example.com/waf#firewall-events,請使用您的域名替換 example.com。
如果您發(fā)現(xiàn) WAF 正在捕獲對 API 的請求,您可以在 WAF 設(shè)置頁面上禁用 API 請求觸發(fā)的單個規(guī)則或多個規(guī)則,也可以通過在 Page Rule 界面對于該 API 禁用 WAF。請務(wù)必注意,WAF 設(shè)置中的禁用規(guī)則將應(yīng)用于整個域,而不僅僅是 API 的 URL。
Security Level:請勿設(shè)置為 IUAM Cloudflare的Securtiy Level Basic Protection Level。在 Cloudflare 設(shè)置或 Page Rule 中設(shè)置“I'm Under Attack”時,每個訪問者都會看到一個插頁式頁面,延遲時間為 5 秒,通過后才將請求重定向到其目標(biāo)。我們建議將此項設(shè)置為除“I'm Under Attack”以外的任何內(nèi)容,以防止對 API 請求應(yīng)用任何延遲。
Browser Integrity Check:關(guān)閉 Browser Integrity Check 可查找惡意訪問者最常用的 HTTP 頭字段,并拒絕訪問請求。由于以編程方式進(jìn)行的 API 調(diào)用通常不會使用與 Web 瀏覽器相同的HTTP頭字段,因此我們建議對 API URL 禁用 Browser Integrity Check,以防在瀏覽器之外進(jìn)行的調(diào)用受阻。