網(wǎng)站出現(xiàn)bug,我深夜被叫醒處理,用一個觸發(fā)器解決了問題
凌晨兩點,我正在睡夢之中,此時電話忽然想起,在漆黑的深夜中顯得格外刺耳。
這個時間點電話響了肯定沒好事,因為我的手機在夜間模式下,除非被同一個電話號碼打三次,否則是靜音,因此電話那邊的人肯定有急事找我。我心一下子緊繃,睡意全無。
來電的是一個陌生的號碼
“喂”我接通電話
“是xxx嗎”電話那頭是一個妹子的聲音,說話聲音有點快, 顯得很急切
“是我,你是哪位,有什么事嗎” 我說
“我是公司客服部的同事,是這樣的,有用戶反映我們的網(wǎng)站的文章評論內(nèi)容被注入了大量的非法廣告,我們查到這塊功能是你負責(zé)的,所以直接聯(lián)系你,希望你能盡快處理下”妹子回答
評論系統(tǒng)剛剛升級過,難道出BUG了,我心里一突
“好的,我馬上看一下,處理好了給你回復(fù)”
掛掉電話,起身穿上衣服,打開電腦,打開網(wǎng)站,隨便點開一篇首頁的熱文,下拉到評論處,果然評論里有大量鏈接內(nèi)容,里面都是一些不堪入目的內(nèi)容。 點開另一篇文章,評論處也是如此。
這可是對公司口碑有影響的事故,我嚇出一身冷汗,必須趕緊處理。
我遠程連接到網(wǎng)站的數(shù)據(jù)庫服務(wù)器,select 了評論表,并做了篩選,發(fā)現(xiàn)非法評論記錄有幾十萬之多,而且還在不斷增長。而問題的原因顯然是提交評論的接口被攻擊了,但是因為編碼是考慮欠周,沒有檢測這種特殊情況,提交的非法數(shù)據(jù)被不斷的寫入至數(shù)據(jù)庫。
要解決這個問題,必須要修改代碼,判斷提交的內(nèi)容合法性和提交頻率。這需要重新發(fā)布版本,況且我家里也沒有代碼,想改也改不了,而這個問題又必須要盡快處理,這可如何是好。
凌晨兩點很涼快,我卻急得渾身發(fā)熱,背心直冒汗。
“沒辦法了,只能先把已存在的非法評論刪除再說”
我用root賬戶登錄數(shù)據(jù)庫,設(shè)置了一個篩選出這些非法評論的where條件,這個條件很容易指定, 因為這些評論都長一個樣子,然后執(zhí)行delete語句,幾秒鐘后,這些非法評論都被刪除。
可是原有的評論雖然被刪除,新的評論還在不斷的寫入, 不一會,評論數(shù)量又達到幾千。
“這樣刪除永遠刪不光啊,這可怎么辦”我急得抓耳撓腮“這要是不能馬上解決, 明天肯定要挨批了,可這個問題根本沒有辦法馬上解決啊,現(xiàn)在連代碼都沒有。難道讓我現(xiàn)在去公司嗎”
忽然,我腦袋里靈光一閃,想到了一個解決方案。
我可以在評論表上加一個insert觸發(fā)器,在觸發(fā)器中對評論內(nèi)容進行檢測,如果插入的內(nèi)容是非法評論,則回滾這次操作,這樣表中就不會再被寫入非法數(shù)據(jù)了。
按照這個思路說做就做,我建立完觸發(fā)器,刪掉表里的非法評論,過了一會,再次檢測發(fā)現(xiàn)非法評論未再次出現(xiàn)。
“方案生效了”我舒了口氣
然而這只是個臨時解決方案,假如對方改了評論內(nèi)容的格式,那這個觸發(fā)器就會失效。與此同時,觸發(fā)器會對數(shù)據(jù)庫性能造成影響,完善的解決方案還是應(yīng)該通過程序處理,不過應(yīng)急處理下問題不大,等挨到天亮就去改程序。
“喂,問題我修復(fù)了,你們看下”我撥通了剛才打給我的客服妹子的電話
“好的,大半夜的處理問題,真是辛苦你了”妹子客套了一下
“沒有,這本來就是我的鍋,是我給你們帶來麻煩了”我說 “對了,你們持續(xù)觀測下,如果再有這種情況,立馬打電話給我,我剛才只是臨時處理下,真正修復(fù)問題還要去公司”
“好的,我們知道”客服妹子甜甜的回答
掛掉電環(huán), 我睡意全無,靜靜的等天亮,去公司徹底解決這個漏洞。
知乎:https://www.zhihu.com/people/aspwebchh
github:https://github.com/aspwebchh
email: aspwebchh@gmail.com

浙公網(wǎng)安備 33010602011771號