發(fā)布于:2020-12-24 16:13:01
0
75
0
如果您在互聯(lián)網(wǎng)上放置一個(gè)文本框,則有人會(huì)將垃圾郵件放入其中。 如果將文本框放置在每天獲得數(shù)百萬點(diǎn)擊的網(wǎng)站上,那么很多人都會(huì)在其中放置大量垃圾郵件。 如果您在該站點(diǎn)上放置了很多文本框,那么您便明白了。
垃圾郵件防護(hù)就像食人魔一樣-它具有層次
許多大型Web應(yīng)用程序是分層部署的。當(dāng)您的瀏覽器向bigsite.example.com發(fā)送HTTP請(qǐng)求時(shí),它可能首先遇到CDN(例如Cloudflare),然后轉(zhuǎn)發(fā)到代理或負(fù)載均衡器,然后轉(zhuǎn)發(fā)到單個(gè)服務(wù)器,這可能又具有反向代理,然后是Web服務(wù)器,然后您的請(qǐng)求才會(huì)真正發(fā)送到應(yīng)用程序本身。我不會(huì)詳細(xì)介紹Stack Exchange的部署方式,因?yàn)镹ick Craver可以比我更好地解釋它。
這些層中的每一層都可以調(diào)整以幫助阻止垃圾郵件。如果您使用Cloudflare,則無需考慮即可為您提供大量自動(dòng)垃圾郵件防護(hù);還有許多其他CDN也會(huì)這樣做。負(fù)載均衡器可以添加一個(gè)簡(jiǎn)單的IP阻止機(jī)制。反向代理可以配置為丟棄來自可疑來源的請(qǐng)求,而這一切都可以在構(gòu)建內(nèi)置更復(fù)雜保護(hù)措施的應(yīng)用程序之前完成。
Stack Exchange利用了許多這樣的層來幫助緩解垃圾郵件問題。為了避免繞過他們太容易,其中一些是故意隱秘的。其他人則更多是公眾知識(shí)。我在這里談?wù)摰氖潜容^公開的部分,通常位于請(qǐng)求路徑的較低層。
不幸的垃圾郵件發(fā)送者收到HTTP錯(cuò)誤
如果有一天我突然決定走上一條新的職業(yè)道路,并試圖讓我的財(cái)富向Stack Exchange發(fā)出垃圾郵件,那我可能會(huì)以為我只是復(fù)制發(fā)布新問題時(shí)發(fā)生的HTTP請(qǐng)求并編寫一些代碼而開始在每個(gè)帖子中對(duì)垃圾郵件進(jìn)行快速重復(fù)。
我會(huì)是一個(gè)不幸的垃圾郵件發(fā)送者,因?yàn)槲液芸炀蜁?huì)達(dá)到垃圾郵件保護(hù)的第一級(jí):429。對(duì)于不熟悉HTTP狀態(tài)代碼的人,429是太多請(qǐng)求。這里的閾值是故意不公開的,但是當(dāng)Stack Exchange注意到您發(fā)送了太多請(qǐng)求以至于無法人工處理時(shí),它將切斷您的發(fā)送并向您發(fā)送此迷人的消息:錯(cuò)誤頁面的屏幕快照,標(biāo)題為“ Too many requests”,其中包含有關(guān)發(fā)出的HTTP請(qǐng)求以及遇到此阻止原因的信息。
現(xiàn)在,鑒于我已經(jīng)編寫了一些代碼來執(zhí)行此操作,可能是我永遠(yuǎn)不會(huì)看到該錯(cuò)誤頁面,并且我的腳本將繼續(xù)運(yùn)行……等等。在某個(gè)時(shí)候,Stack Exchange SRE可能會(huì)四處查看,并確定我是害蟲,然后(示意性地)將我的IP中的任何請(qǐng)求路由到/ dev / null。
我可能會(huì)注意到?!暗?,哈哈,”我聽到你說,“你可以得到一個(gè)新的IP!”我可以的,直到我也被禁止了?!暗前」?,您可以只使用Tor!”從表面上看,這聽起來像是個(gè)好主意,直到您意識(shí)到Tor出口節(jié)點(diǎn)的列表是公開的,并且不會(huì)很快改變。換句話說,Stack Exchange可以告訴您何時(shí)使用Tor,如果您是害蟲,可以簡(jiǎn)單地…關(guān)閉Tor訪問。
幸運(yùn)的垃圾郵件發(fā)送者無論如何都會(huì)遭到IP阻止
HTTP請(qǐng)求發(fā)送到Stack Exchange應(yīng)用程序后,任何潛在的垃圾郵件發(fā)送者都會(huì)遇到另一個(gè)障礙:SpamRam。
SpamRam是Stack Exchange的定制垃圾郵件防御系統(tǒng)。它會(huì)監(jiān)視所有收到的新帖子,可疑地斜視他們,以決定它們是否為垃圾郵件,如果是,則將其刪除6條。真的很擅長(zhǎng):垃圾郵件被屏蔽與垃圾郵件標(biāo)記的圖表(2014年3月2日至4月1日),顯示了3月28日受垃圾郵件的明顯峰值,而標(biāo)記的垃圾郵件則保持不變
誠然,這是一個(gè)古老的圖表,但它表明SpamRam甚至在打到網(wǎng)站之前就已經(jīng)擺脫了垃圾。
之所以如此出色,部分原因在于,一旦識(shí)別出垃圾郵件,它就會(huì)直接進(jìn)入IP阻止機(jī)制。如果某個(gè)帖子被視為潛在的垃圾郵件而被阻止,則來自該IP地址的IP地址可能會(huì)被完全阻止,陷入混亂(即嚴(yán)格限制速率)或被阻止發(fā)布-這就是“由于垃圾郵件/濫用源于您的網(wǎng)絡(luò)”消息,有關(guān)不時(shí)出現(xiàn)在元數(shù)據(jù)上的投訴。
那橙色線呢?這就是通過的內(nèi)容,即用戶實(shí)際看到的垃圾郵件。這些帖子被用戶標(biāo)記為垃圾郵件,它們還會(huì)反饋到SpamRam中,并再次幫助通知IP阻止。主持人采取的措施可以幫助推動(dòng)系統(tǒng)發(fā)展-主持人當(dāng)然也可以標(biāo)記垃圾郵件,但他們也可以銷毀用戶,并特別聲明他們這樣做是因?yàn)橛脩羰抢]件發(fā)送者,這向SpamRam強(qiáng)烈表明它來自的IP地址是個(gè)壞消息。
那么人們?nèi)绾握业揭獦?biāo)記的帖子?這就是最后一點(diǎn)。
真正幸運(yùn)的垃圾郵件發(fā)送者會(huì)被垃圾郵件標(biāo)記致死
如果你是一個(gè)狡猾的,鬼鬼祟祟的,非常幸運(yùn)的垃圾郵件制造者,你可能會(huì)通過一些垃圾郵件,并成功地登陸到一個(gè)網(wǎng)站而不被阻止。恭喜你!現(xiàn)在你到了最后一道防線——社區(qū)的防御機(jī)制。
我提到過垃圾郵件攻擊——任何超過15的人都可以這么做。如果你在瀏覽網(wǎng)站時(shí)看到了垃圾郵件,你可以用垃圾郵件標(biāo)記它。六個(gè)垃圾標(biāo)志會(huì)自動(dòng)刪除帖子,將其標(biāo)記為垃圾郵件(包括隱藏內(nèi)容),并將其和作者發(fā)送到SpamRam。
這依賴于人們?cè)陔S意瀏覽時(shí)看到垃圾郵件。在大多數(shù)情況下,這是非常有效的,特別是在高流量的網(wǎng)站,但特別是在較小的網(wǎng)站,垃圾郵件可以停留一段時(shí)間,直到它收集到足夠的標(biāo)志。幸運(yùn)的是,社區(qū)中的一些人很久以前就認(rèn)識(shí)到了這個(gè)問題,并開始了一個(gè)旨在解決這個(gè)問題的項(xiàng)目。輸入:carbon是運(yùn)行煙霧探測(cè)器的組織,從根本上說,煙霧探測(cè)器是一個(gè)尋找垃圾郵件并將其輸入聊天室的機(jī)器人,等待的用戶可以跟蹤鏈接并標(biāo)記垃圾郵件。
從技術(shù)上講,它是通過監(jiān)聽棧交換websocket并請(qǐng)求用于提供實(shí)時(shí)頁面的相同動(dòng)作來實(shí)現(xiàn)這一點(diǎn)的。這讓我們得到每一個(gè)新的和編輯過的問題或答案,在網(wǎng)絡(luò)上無處不在。每個(gè)帖子都會(huì)被掃描,這包括對(duì)其內(nèi)容進(jìn)行大量的正則表達(dá)式和一些啟發(fā)式測(cè)試,看看是否有結(jié)果為真。當(dāng)然,絕大多數(shù)都不是垃圾郵件,但還有相當(dāng)一部分是垃圾郵件——而且那些被貼上聊天標(biāo)簽的垃圾郵件會(huì)被標(biāo)記為不光彩。
這樣做意味著我們捕捉到很多不是垃圾郵件的帖子(誤報(bào))。這很好——因?yàn)樵跇?biāo)記每一篇文章之前都有一個(gè)人在檢查,我們的目標(biāo)不是0%的假陽性率,而是0%的假陰性率——換句話說,我們?cè)噲D不遺漏任何垃圾郵件,即使這意味著偶爾會(huì)錯(cuò)誤地將一篇好文章識(shí)別為垃圾郵件。
但有時(shí),人類還不夠。不管垃圾郵件被標(biāo)記和刪除的速度有多快,總會(huì)有更多的垃圾郵件被刪除。垃圾郵件通常是一波又一波的出現(xiàn),在高峰時(shí),垃圾郵件的數(shù)量可以輕易地壓倒人類的惡意攻擊者,需要花費(fèi)一些時(shí)間來追趕并刪除所有的垃圾郵件。也就是說,這里有一個(gè)主題,也有一個(gè)解決方案。
武裝機(jī)器人并將其放開
當(dāng)標(biāo)記變得越來越困難時(shí),就會(huì)變得困難……將控制權(quán)交給計(jì)算機(jī),讓它們來完成工作。
當(dāng)Smokey判定帖子為垃圾郵件時(shí),會(huì)將其發(fā)送到我們的Web儀表板metasmoke。 Metasmoke是最初非常簡(jiǎn)單的應(yīng)用程序之一(只需記錄帖子即可),但是隨著時(shí)間的推移,它逐漸發(fā)展起來,現(xiàn)在可以處理很多東西。像這樣的東西:
記錄帖子
記錄帖子獲得的任何反饋-肯定,否定,不是答案等。
運(yùn)行審閱隊(duì)列以獲取對(duì)尚未有人看過的帖子的反饋
記錄和分類已用于垃圾郵件的網(wǎng)站
協(xié)調(diào)多個(gè)SmokeDetector實(shí)例并管理故障轉(zhuǎn)移
顯示所有漂亮的圖
托管其他功能的API(例如用戶腳本)以與其集成
也許最重要的是運(yùn)行自動(dòng)標(biāo)記。
2016年11月至12月,我們?cè)趍etasmoke中構(gòu)建了一個(gè)系統(tǒng),以識(shí)別最有可能成為垃圾郵件的帖子。我們?cè)诳者\(yùn)行下測(cè)試了一段時(shí)間(不投放任何標(biāo)志),然后再次測(cè)試,投放標(biāo)志使用一名幸運(yùn)的受害者志愿者的帳戶。它超出了我們的期望-準(zhǔn)確度很高,并且?guī)缀醪东@了所有明顯的垃圾郵件。 2月,我們公開發(fā)布了該系統(tǒng),其中包括呼吁舉報(bào)者將其標(biāo)志借給我們,即使用metasmoke進(jìn)行簽名,以便該系統(tǒng)可以以其名義舉報(bào)帖子。此后不久,我們將系統(tǒng)從在每個(gè)帖子上投射單個(gè)自動(dòng)標(biāo)志,移動(dòng)到在每個(gè)帖子上投射三個(gè)自動(dòng)標(biāo)志。
實(shí)際上,木炭和SmokeDetector是Stack Exchange上抵御垃圾郵件的最后一道防線。 將所有這些系統(tǒng)結(jié)合在一起,Stack Exchange在保護(hù)自己免受垃圾郵件侵害方面做得非常好。
下一個(gè)是什么?
對(duì)于堆棧交換? 誰知道—垃圾郵件檢測(cè)系統(tǒng)始終可以做出改進(jìn)。 為了木炭? 我們將繼續(xù)調(diào)整系統(tǒng)并更新我們的檢測(cè)規(guī)則,始終在尋找更多要?jiǎng)h除的垃圾郵件。
如果您想了解有關(guān)木炭的更多信息,則可以瀏覽網(wǎng)站,我們的GitHub組織或與我們聊天。 我們一直在尋找新面孔為您提供幫助-無論您只是有興趣還是希望自己可以從事下一個(gè)重要功能,我們都希望擁有您。
作者介紹
熱門博客推薦