最近逛一些國(guó)內(nèi)外的知名技術(shù)網(wǎng)站,發(fā)現(xiàn)了一個(gè)現(xiàn)象,大家仿佛約好了似的,都開始搞人機(jī)驗(yàn)證了。
![]()
![]()
為啥原來(lái)人機(jī)驗(yàn)證很少,現(xiàn)在頻率這么高呢?
原因很簡(jiǎn)單:AI爬蟲。
現(xiàn)在大家已經(jīng)習(xí)慣了問(wèn)AI技術(shù)問(wèn)題,但是AI的數(shù)據(jù)從哪里來(lái)呢?自然是從這些技術(shù)網(wǎng)站“爬”來(lái)的。
如果爬蟲按照robots.txt還好,壞就壞在有些爬蟲完全不按規(guī)則行事,技術(shù)網(wǎng)站就不得不防了。
“原先就被爬,AI 起來(lái)以后,防不勝防,爬的更狠了”——某位大論壇的 CEO 如是說(shuō)。
防止爬蟲,技術(shù)上有很多方法,例如檢查User-Agent,Referer,限制訪問(wèn)頻率,檢查Cookie等等。
只不過(guò)這些傳統(tǒng)的方式很容易被爬蟲繞過(guò),逃過(guò)檢測(cè)。
所以現(xiàn)在出現(xiàn)了一些更高級(jí)的反爬蟲思路,例如識(shí)別行為:檢測(cè)鼠標(biāo)鍵盤的使用習(xí)慣,檢測(cè)瀏覽器窗口的擺放位置,綜合判斷是不是真人行為。
識(shí)別本地瀏覽器的客戶端特征,禁止無(wú)頭瀏覽器訪問(wèn)。
注入算力驗(yàn)證腳本,消耗 CPU 資源,抬高客戶端的訪問(wèn)成本,讓原本每秒可以訪問(wèn) 1000 次的設(shè)備,在被保護(hù)后每秒只能訪問(wèn) 1 次。
打亂HTML結(jié)構(gòu),混淆JS代碼等等。
這些防護(hù)行為,網(wǎng)站想自己實(shí)現(xiàn)非常麻煩的,最好用專業(yè)的軟件,比如雷池這樣的Web應(yīng)用防火墻。
![]()
雷池全球裝機(jī)量超過(guò)50多萬(wàn)臺(tái),日均處理300億次請(qǐng)求,檢出率76.17%,誤報(bào)率僅0.22%。
在GitHub上,雷池的star已經(jīng)達(dá)到20.9k,是最受歡迎的WAF項(xiàng)目,沒(méi)有之一。
它的安裝非常簡(jiǎn)單,一行命令就行:
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"安裝成功以后,就可以打開瀏覽器訪問(wèn)雷池控制臺(tái)了
https:// :9443/
![]()
01
爬蟲防護(hù)
安裝好以后,進(jìn)入人機(jī)驗(yàn)證設(shè)置:
![]()
然后訪問(wèn)被雷池 WAF 防護(hù)的網(wǎng)站,就會(huì)看到雷池正在檢查客戶端環(huán)境的安全性。
![]()
合法用戶等待兩三秒以后,真正的網(wǎng)頁(yè)內(nèi)容會(huì)自動(dòng)載入,惡意用戶則會(huì)被阻攔。
如果檢測(cè)到本地客戶端被自動(dòng)化程序控制,訪問(wèn)依然會(huì)被阻止,如下圖:
![]()
還可以啟用動(dòng)態(tài)防護(hù)功能,,對(duì)返回給瀏覽器的 HTML、JS 進(jìn)行動(dòng)態(tài)處理,讓每一次訪問(wèn)看到的代碼形態(tài)都不完全一樣。
![]()
這樣一來(lái),爬蟲和自動(dòng)化腳本就很難通過(guò)“靜態(tài)規(guī)則”來(lái)理解頁(yè)面結(jié)構(gòu),比如這個(gè)JavaScript:
![]()
被雷池進(jìn)行動(dòng)態(tài)加密以后變成了這個(gè)樣子,很難辨認(rèn)了。
![]()
特別值得一提的是,雷池的人機(jī)識(shí)別是采用的是云端驗(yàn)證方式,每一次驗(yàn)證都會(huì)調(diào)用長(zhǎng)亭的云端 API 來(lái)輔助驗(yàn)證。
結(jié)合雷池的 IP 威脅畫像數(shù)據(jù),瀏覽器指紋數(shù)據(jù),最終對(duì)于爬蟲的識(shí)別率超過(guò) 99.9%。可以說(shuō)是反惡意爬蟲的最佳利器。
與此同時(shí),云端的算法和 JS 邏輯會(huì)持續(xù)自動(dòng)更新,即使被厲害的大佬破解,破解的也只是過(guò)去的版本,雷池永遠(yuǎn)跑在攻擊者的前面。
看著這么高的識(shí)別率,網(wǎng)站站長(zhǎng)們肯定會(huì)擔(dān)心這會(huì)不會(huì)影響 SEO,會(huì)不會(huì)影響搜索引擎對(duì)于網(wǎng)站頁(yè)面的收錄情況。
答案當(dāng)然是 “不會(huì)”,雷池貼心的提供了各大搜索引擎的爬蟲 IP 列表,如果對(duì) SEO 有需求,只需要對(duì)這些 IP 加白即可。
![]()
02
CC防護(hù)
在 Web 世界里,有一類攻擊特別讓人難受,叫 CC 攻擊(Challenge Collapsar)。
攻擊者會(huì)控制大量肉雞(被感染的電腦)或代理服務(wù)器,偽裝成正常瀏覽器訪問(wèn)網(wǎng)站,不斷訪問(wèn)首頁(yè)、搜索頁(yè)、接口等。每個(gè)請(qǐng)求看起來(lái)都合法(有正常的 User-Agent、Referer、Cookie),但數(shù)量極其巨大。
最終讓服務(wù)器過(guò)載,網(wǎng)頁(yè)卡死、數(shù)據(jù)庫(kù)阻塞或服務(wù)崩潰。
![]()
由于請(qǐng)求看起來(lái)都合法,這種攻擊非常難以防御。
針對(duì)這種情況,雷池防火墻提供了“頻率限制”的功能,如果某個(gè) IP 在短時(shí)間內(nèi)發(fā)起大量 HTTP 請(qǐng)求,就阻斷該 IP 后續(xù)的所有訪問(wèn),要求它通過(guò)人機(jī)驗(yàn)證,確保是真人才行。
![]()
還有不少應(yīng)用存在高峰流量的情況,比如搶票,熱點(diǎn)事件等,如果不進(jìn)行限流,服務(wù)很容易被海量的請(qǐng)求沖垮,誰(shuí)也用不了。
當(dāng)然程序員可以寫代碼,深入到網(wǎng)站內(nèi)部去實(shí)現(xiàn)限流功能,但是很麻煩,使用雷池的“等待室”功能,根本不用對(duì)應(yīng)用做任何改變就可以實(shí)現(xiàn)限流。
![]()
這里配置的在線用戶是超過(guò)了100人就需要進(jìn)入等待室等候了,而進(jìn)入應(yīng)用的用戶,如果超過(guò)3分鐘在網(wǎng)頁(yè)上沒(méi)有操作,對(duì)不起,那就去等候室重新排隊(duì)吧。
03
身份認(rèn)證
第一次看到“防火墻自帶身份認(rèn)證”這個(gè)功能時(shí),我也愣了一下。按理說(shuō),認(rèn)證不是應(yīng)用程序自己該做的事嗎?
但仔細(xì)想想,這個(gè)功能解決的其實(shí)是一個(gè)很現(xiàn)實(shí)的問(wèn)題:很多系統(tǒng)從一開始就沒(méi)打算暴露在公網(wǎng)。
比如一些內(nèi)部工具、監(jiān)控頁(yè)面、管理后臺(tái),本來(lái)只打算給小范圍的人用,結(jié)果后來(lái)為了方便,直接掛到了服務(wù)器上。
這類系統(tǒng)往往認(rèn)證簡(jiǎn)單,甚至干脆沒(méi)有認(rèn)證,一旦被掃到,就是一個(gè)現(xiàn)成的入口。
雷池在這里提供的是一種“外掛式”的解決方案:不改應(yīng)用代碼,只在防火墻層面加一層身份校驗(yàn),就能把這個(gè)入口先堵住。
![]()
它不是用來(lái)替代應(yīng)用本身的權(quán)限系統(tǒng),而是在你來(lái)不及重構(gòu)之前,先把門鎖上。
![]()
04
語(yǔ)義檢測(cè)
除了上面所說(shuō)的各種防護(hù),雷池對(duì)于 SQL 注入、XSS、路徑穿越、命令注入這些老生常談的攻擊方式,自然不在話下。
![]()
雷池的準(zhǔn)確率、檢出率都非常高,誤報(bào)率,漏報(bào)率非常低,性能指標(biāo)優(yōu)于全球的一些知名產(chǎn)品:
![]()
但真正讓我覺(jué)得它“不只是換了個(gè)殼”的,是它背后的思路。
傳統(tǒng)防火墻更多是規(guī)則匹配,比如看到 union、select 這些關(guān)鍵字,就覺(jué)得你可能在搞 SQL 注入。
問(wèn)題是,這種方式一方面容易誤傷,另一方面也很容易被繞過(guò), 稍微有點(diǎn)經(jīng)驗(yàn)的攻擊者,換個(gè)寫法、插點(diǎn)注釋,例如只要在在 union 和 select 中間插入了注釋字符:union /**/ select,這樣破壞了關(guān)鍵字的特征,傳統(tǒng)防火墻就檢測(cè)不出來(lái)了。
雷池用的是另一條路:語(yǔ)義分析。
它不是只盯著字符本身,而是嘗試?yán)斫膺@段輸入“在語(yǔ)義層面想干什么”。
對(duì)HTTP 請(qǐng)求解碼之后,會(huì)根據(jù)內(nèi)容類型交給不同的解析器,再判斷這段輸入是否真的會(huì)構(gòu)成攻擊。
說(shuō)白了,就是:不看你寫得像不像壞人,而是看你做的事能不能真的傷到系統(tǒng)。
05
總結(jié)
正是由于雷池精準(zhǔn)地、漂亮地解決了Web系統(tǒng)廣泛存在的安全問(wèn)題,吸引了全球大量客戶的使用,成為優(yōu)秀企業(yè)的信賴之選。
如果你也有Web網(wǎng)站,需要把安全防護(hù)做好,強(qiáng)烈建議考慮下雷池這個(gè)非常優(yōu)秀的開源的WAF。
最后,有什么建議和問(wèn)題,歡迎大家加入雷池的微信交流群:
也歡迎大家到GitHub,給雷池點(diǎn)個(gè)小星星,支持下國(guó)產(chǎn)的WAF:
https://github.com/chaitin/SafeLine
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.