最近上線一個香港項目,使用了騰訊云的EdgeOne,已經(jīng)在UAT測試沒有任何問題。
生產(chǎn)上線以后發(fā)現(xiàn)內(nèi)頁圖片無法訪問,全部400錯誤:


甚至部分api地址也是不定時的報錯400

更甚至首頁有時候直接就報錯400

國內(nèi)訪問很高的概率出現(xiàn)400錯誤,但是只要一翻墻,訪問就正常,但是在香港、澳大利亞、新加坡也有部分客戶訪問會出現(xiàn)400錯誤。
但是一樣配置的UAT一切正常,生產(chǎn)環(huán)境唯一不一樣的就是域名。
在花了兩天時間排查了CDN、安全防護所有一切可能以后,向騰訊云提交了工單。
得到了這么一個結(jié)果:
背景說明:Domain?Fronting?防護機制
在 2023年起,香港政府及其承包供應(yīng)商對?Domain?Fronting(域名前置)攻擊要求加強防護。
該攻擊方式的原理是:
攻擊者可以偽造?TLS?握手里的?SNI(Server?Name?Indication)?和?HTTP?請求頭中的Host?不一致,例如:
SNI?顯示為gov.hk?(可信域名)
Host?頭卻指向evil.com?(惡意服務(wù)器)
這會導(dǎo)致安全設(shè)備、CDN?或?WAF?錯誤地認(rèn)為是合法流量,從而實現(xiàn)繞過檢測、信息隱匿等攻擊行為。
因此,安全需求明確提出:
“當(dāng)客戶端攜帶的?SNI?與?HTTP?Host?Header?不一致時,系統(tǒng)需攔截請求并返回400。”
所以當(dāng)我們通過多域名去區(qū)分pc端、手機端、文件、API的時候,就出現(xiàn)了不一致的情況。
比如兩域名(www?和m)在相同IP?下、使用同一通配符或?SAN?證書,且服務(wù)端啟用了HTTP/2 (h2),瀏覽器為了性能優(yōu)化啟用了Connection?Coalescing(連接復(fù)用)機制。
其行為是:
瀏覽器僅建立 一次?TLS?連接(SNI?=?www.xxx.hk);
接著在這條TLS?連接上復(fù)用通道發(fā)送Host:?m.xxx.hk?請求。
出于?香港政府Domain?Fronting?策略要求,該行為被判斷為異常訪問(SNI/Host?不一致),EdgeOne?安全引擎觸發(fā)?防護攔截 → 返回?HTTP?400
所以關(guān)閉EdgeOne默認(rèn)的http2加速就可以了。



