【廉環話特輯】此錦囊請在雙十一前一周打開
原創【51CTO.com原創稿件】又是一年剁手節,
流量訂單齊迸發。
電商賣家大比拼,
幾家歡喜幾家愁。
開場給大家來了首打油詩。是的,今年雙十一大促的號角又吹響了,廣告鋪天蓋地,血拼族們對這個節日已經是摩拳擦掌了。我們用腳趾頭都能預測到今年又將出現“許三多”,即:許多促銷,許多圍觀和許多訂單的景象。但是這些巨大的無形沖擊的匯集,實際上無論對電商平臺的支撐能力還是賣家的處理能力都是全方位的考驗。同時,現在網絡流氓不但有了文化,也伴隨著年年雙十一節逐漸成長并磨練攻擊技能,而且已經形成了一套完整的攻擊協作的生態鏈。可見,如此嚴峻的形式已讓電商賣家務必愛恨交織了。他們在幻想著能大賺一筆的同時,也倍感壓力山大。沒辦法,自己創造的節日,無論是哭著還是笑著都要跑到終點。
電商平臺,看這里
兵法曰:故知戰之地,知戰之日,則可千里而會戰。
有個電商平臺運維的朋友曾坦言:每到十月底,一想到各種爆款、爆買、爆單、爆倉…就有些肉疼,生怕哪個環節出了故障,被賣家們齊聲指責:“原來你是這樣的電商平臺…”。那么如何才能沉著應對流量的井噴、處理海量的訂單、保障整個網站系統的安全和穩定呢?讓我來給您慢慢撥開這個“洋蔥”看看吧。
本人認為安全穩定無非是兩個方面:網站系統的平穩運行和攻擊發生時的應對。我們先來看看:網站系統平穩運行,它主要依賴于如下方面的綜合支撐:
· 穩定的機房物理環境和完備的基礎設施保障。無論是自建的還是外包出去的,大家都可以參考類似于GB50174《數據中心設計規范》之類的要求進行自查或要求外包中心提供出詳檢報告。另外,對于一些要求高且實力雄厚的土豪可自行腦補“同城一主三從”的模式。
· 齊備的網絡防護硬件設備和統一且細粒度的網絡監控平臺。特別是分布式網絡環境中,全鏈路的網絡狀態監控與分析可以有助于及時發現問題點和瓶頸點,提升問題的定位效率。適當的時候,可以通過人工干預等方式靈活進行網絡資源調配。還記得糾正前些時的10月21日,美國東部大面積網絡癱瘓事件嗎?一天之內,美國主要域名服務器供應商Dyn遭到了三波DDoS的網絡攻擊,什么Facebook、twitter、spotify、CNN都登錄不上去了。簡單反思一下,這說明如果你有一個配置好了異地的備用DNS服務器是多么的重要啊!當然,如果您想了解更多網絡方面的加固經驗,請出門左轉,參考一下本網站每周連載的《廉環話--漫談信息安全設計與治理》,那里有很多實際經驗方面的小貼士。
· 大促當天,各種數據勢必會雪崩式的猛增,因此硬件方面的擴容、升級,是越早準備越好。當然也要有合理的預估,盡量避免僅僅為了應對這次單次峰值的批量機器采購現象的發生。特別是在存儲方面,在云平臺服務盛行的今天,可以通過自我容量的現狀評估,提前購買和簽訂云資源的彈性擴容協議。
· 在我們技術中人看來,雙十一大促就是一個時間緊、任務急、要求高的IT項目。所以諸如:問題管理、變更管理、發布管理、配置管理等日常項目的管控是統統可以適用的。值得特別注意的是,任何對平臺硬件配置和軟件程序上的修改都要事先做兩輪以上的測試而且是壓力測試。具體方法可以借鑒日志收集式的線下壓力測試與流量導出式的線上壓力測試相結合來實施。正如華為總裁任正非最近說道的“自己做的狗食要自己先吃”那樣,通過接近于真實場景的壓力測試,很多細節問題會自行暴露出來的。
· 人員支持方面,如果不想讓您和您的團隊當天有種“感覺身體背掏空”的感覺的話,請務必分配好專人專崗通過監控軟件去獲取數據量,并掌握趨勢曲線,以及必要的時候采取的人工干預限流、鏈路切換等措施都。整個團隊中一起,通過brainstorm或是參考他山之石等方式,提前申請好必要的資源,比如說事先準備一個war room等。
· 結合平時的BCP和DRP制定當天的應急預案,多用“if then, else if then”這樣的程序化模式和言簡意賅的流程圖的表現方式,不要忽略了call tree的定義。當出現事故的時候,人員的應變能力和判斷能力可能會現場受限,因此需要人手一份的嚴格按步驟執行,井然有序的提前先做幾次沙盤演習,并查缺補漏排除盲點。
· 在程序代碼開發方面,一般做法都是前端只做展示,不進行邏輯處理。因此頁面上的一次鏈接點擊,在后端可能會產生幾十次的RPC調用,Web、服務化、緩存、消息隊列、DB…因此任何一個環節出了故障都可能導致剁手黨們用腳投票,從而轉投它商。有過開發經驗的小伙伴都知道在開發高并發系統時,可用“三寶”來保護系統,即:緩存、限流和降級。一般順序是:先有緩存這個常態機制,后有限流來應對高并發和瞬間流量對系統的強大沖擊,與此同時,按需降級來實現網站的有損服務而不是不提供服務哦。
◆ 緩存:可以利用瀏覽器的緩存、CDN緩存、服務端應用的本地緩存、緩存服務器集群的一致性哈希以及服務端分布式緩存的多級緩存化機制來提高緩存的命中率,并減少帶寬消耗。
◆ 限流:可以限制瞬時并發數、限制總的并發數(比如數據庫連接池、線程池)、限制時間窗口內(如每秒)的平均速率、限制遠程接口調用速率、限制消息隊列的消費速率等。另外還可以根據網絡總連接數和流量、服務器CPU或內存的負載等方面來進行限流。
◆ 降級:可以根據系統日志里規定的級別,如一般、警告、錯誤、嚴重錯誤等來定義,自動或人工的相關設置,實現對頁面、讀操作、寫操作的降級。畢竟是雙十一的搶購當天,很多用戶實際上都已經把貨品放入了購物車,所以在真實情況下一般不會再去花時間瀏覽商品的詳情頁上的推薦內容甚至是評價之類的信息,所以完全可以把商品詳情內容以及評價暫時不予加載和展示給買家,所以這對購物流程是不會產生明顯影響的。
針對不同種類的限流和降級,頁面顯示也可有所不同。可以是將買家導流到排隊頁面、等一會重試的排隊頁面;也可以直接告知買家沒貨了;亦或為“活動太火爆了,稍后重試”的錯誤頁面。總之,丟卒保車總要好過全軍覆沒。
常言道:“上醫治未病”,我們再來看看攻擊發生時的應對,這里主要著眼的是網站程序代碼的方面。
· 入境檢測
◆ 對輸入的網站請求進行實時分析(包括各個特征字段,post-process分析等)。
◆ 檢測在用戶填寫并提交到網站上的信息內容里是否包含惡意的鏈接(掛馬)。
◆ 打開HTTP審計日志并分門別類寫到不同的文件中。
◆ 只記錄有意義的請求,也就是說可以適當忽略如圖片文件之類,被攻擊的危險性相對較低且沒有參數的請求。另外,在日志中應屏蔽掉如登錄密碼、信用卡等敏感數據,并集中到中央日志服務器上,以免被非法獲取。
· 分析請求
◆ 對請求體里的類型(Content-Type)進行勘察,識別出畸形請求體(特別是XML類型)。
◆ 別請求是否進行過多次編碼,甚至是為了增加偽裝性的畸形編碼。
◆ 檢測是否有異常的瀏覽器請求頭部(如host,user-agent,accept)信息和順序(比如不同瀏覽器的host位置不同)。
◆ 檢測是否有多余的參數,丟失的參數,重復的參數名,異常的參數長度和參數字符集等。
◆ 借用現成的或是構建自己的黑名單(RBL)來識別惡意IP地址。
· 請君入甕
◆ 添加蜜罐端口,來檢測是否有可疑的流量。
◆ 在頁面上添加假的HTML注釋、假的表單隱藏字段、以及假的cookie,這樣既可誤導攻擊者也可在這些數據被修改時聯動報警。
◆ 針對網絡爬蟲,添加虛假的robot.txt的Disallow條目,以誘惑訪問disallow的目錄,并記錄以便分析。如果有時間和經歷的話,甚至可以制作一些假的認證機制和頁面。
· 出境檢查
◆對輸出的頁面數據添加額外的哈希值,以避免被中間人篡改。
◆ 檢測異常的響應頭部。比如:網站響應的網頁面上頻繁出現HTTP 4XX或5XX的錯誤,則可能是攻擊者通過發來的有問題請求或處理來對網站進行掃描和偵查。另外,攻擊者通過操縱Apache的.htaccess文件,以HTTP 3XX的響應,把請求重定向到惡意網站。
◆ 檢測響應頭部和響應體是否信息泄露,這一點技術上有必要,但實際上對于雙十一請求量大的時候就要做好檢測的優化了,不然會影響響應速度。另外,這種檢測多適用于文本內容,而對于MIME類型的二進制格式也可能會有誤報或漏報。
◆ 檢測頁面標題是否被變更,頁面大小是否有偏差。因為當Web頁面被篡改時,最終的頁面可能比正常小得多;而當攻擊者成功進行了SQL注入攻擊并對數據進行大量拉取時,頁面則又會大很多。所以可以設置上限和下限的閾值。當然,此檢測也可能會誤報,比如有商品的詳情頁面隨著評論的迅速增加而遞增。還是上述觀點:雙十一當天應該不會出現該情況,因為大家搶購還來不及何談評論?
◆ 檢測動態內容是否被變更,主要監控頁面上javascript,iframe,image以及超級鏈接的標簽數量。
◆ 檢測是否存在源代碼的泄露,比如:用戶在網址后面添加入?-s之類特殊字符,是否會反饋網頁的源代碼?
◆ 檢測網址返回的錯誤信息提示里所包含的網址結構等信息。
當然還能列舉更多,但相信如果能切實做到上述對程序的管控,效果就已經是杠杠的了。其實有“業界良心”的電商平臺都已經做到了。所以說,并不存在什么“人無我有,人有我精”的大技,您要做到的就是“跟緊了,別掉隊”,不要成為攻擊者眼中的“肉雞”。最后提醒一點的是:萬一真的出了故障,信息公開方面要及時。在這個迅速傳播發酵的時代,如果你還想遮遮掩掩的話,那就基本上可以狗帶了。
若是賣家,往下看:
兵法曰:善守者,敵不知其所攻!兵者詭道也!
您也許會說:“我只是一個在平臺上開小網店的賣家,別跟我整那些詩和遠方,告訴我一些眼前能達到的小目標吧。”好,切克鬧!在你開啟節日自嗨模式之前,請先認真閱讀如下幾點:
· 凡事預則立,是的,賣家也需要有應急預案,不用太復雜,主要是確定發生各種可能事件優先級,自己和小伙伴們多演練演練。還是那句話,“能動手就別吵吵”。
· 雙十一當天你可以全天不吃不喝,但是如果突然停電or跳閘,那就再多的訂單也你也處理不了,所以為了防止哭暈在廁所的情況發生,給自己的筆記本電腦的電池充滿電是必要的(對,首先你要有個筆記本)。愿意自備UPS的土豪朋友請自便。
· 另外一個“萬萬沒想到”的事情就是突然斷網了。所以你需要準備一個有充足流量套餐的無線MIFI,當然如果能插入電腦的USB,那就更完美了。
· 人常說:“華佗無奈小蟲何”,如果出現買家在地址欄內填寫一個QQ號、微信號、或是電話空號、甚至是敲詐商家等這些很low的伎倆時,只要符合上述惡意場景的特征,作為商家的你就可以在訂單管理頁面直接關閉付款訂單,對,就這么簡單直接粗暴!
· 正所謂林子大了什么鳥都有是事實那樣,如果你的小店在遇到惡意張貼小廣告的評價,請及時選中廣告評價,到評價管理頁面迅速點擊屏蔽哦。
· 常言道:防火防盜防同行,防盜圖工具。還有些買家一言不合就跟你玩重復訂單和惡意退款。所以在全程監控各個訂單的支付狀態的同時,也要多留意電商平臺以及自己的管理端,查看是否有預警消息,及時處理,以免后續帶來一系列的損失。
· 如果你還是個圖樣圖森破的菜鳥的話,老司機有時候會玩出 “訂單分組,聚類訂單”之類的花樣,以及關閉庫存回寫功能,以避免商品在多平臺上超賣的“特效”。過節前,你好好研究一下吧。
騷年,哥嘮嘮叨叨說了這么多,就是希望您在即將到來的非常時期,在為剁手黨們提供美好的網購體驗的同時,能從容應對各種可能性突發事件。上面是從電商平臺和賣家兩個視角出發,列出了的大促之前的各種技術準備以及當天的各種應對策略。雖然談不上值得“熟讀并背誦全文”,但有道是“技不壓身”,希望您能get到大概要點。也許您會說這些全是套路。對的,正所謂“知易行難”,關鍵還是在于您是不是認真的去做到了。最后希望用盡洪荒之力的你,能在11月12日傲嬌的哼出那首“我得意的笑”,而不是去翻唱那首新歌《藍瘦,香菇》。
【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】