程序員職業(yè)的特點(diǎn),難免會影響自己的業(yè)余愛好,比如空閑時(shí)間別人逛淘寶,程序員就逛博客園、刷微博的時(shí)候也會關(guān)注一些互聯(lián)網(wǎng)技術(shù)方面的微博,還有一部分像我,做一名業(yè)余站長,利用下班時(shí)間維護(hù)更新下網(wǎng)站內(nèi)容,看著IP數(shù)的增長、百度收錄、關(guān)鍵字的排名攀升,自己也會得到滿足,順帶的是,掛在網(wǎng)站上的幾個GG、百度聯(lián)盟廣告也有些許的收入,解決兩餐問題還是可以的,其實(shí)程序員做網(wǎng)站最主要的是為了興趣,想賺大錢的話就不會做草根小站長了。
廢話了不少,說說這次遇到的網(wǎng)站被掛惡意代碼的經(jīng)歷吧;
惡意代碼的表現(xiàn)是:從百度收錄的文章點(diǎn)過來到網(wǎng)站就會彈出好幾個色*情網(wǎng)站彈窗頁,而我從瀏覽器地址欄直接輸入網(wǎng)址的話,就不會出現(xiàn),按照常規(guī)的排查手段,馬上到站點(diǎn)查看有沒有惡意文件,然后檢查下網(wǎng)站的文件有沒有被注入了惡意的代碼,經(jīng)過排查,都是正常的(這里犯錯了,我只檢查了模板文件,沒有檢查JS文件,為后續(xù)留下隱患),繼而,我懷疑是不是廣告聯(lián)盟的代碼問題呢?所以,我把模板文件備份一下,把全部的廣告聯(lián)盟代碼、分享組件代碼全部都去掉,發(fā)現(xiàn)還是會彈窗,因?yàn)楹脦滋於紱]能把這個問題解決,跟同學(xué)都覺得這個問題真是太神,其中懷疑過VPS的空間商是不是被黑了,但是發(fā)現(xiàn)網(wǎng)站更換模板之后就沒有彈窗了,于是還是把排查重點(diǎn)放在模板文件上。
排查有了新的轉(zhuǎn)機(jī),當(dāng)我把所有外部引用JS(廣告、分享?xiàng)l、微博、日志推薦)都排查掉之后,我開始懷疑網(wǎng)站的JS文件了,結(jié)果在Jquery里發(fā)現(xiàn)了這段惡意的代碼,因?yàn)閻阂鈴棿笆窃诰W(wǎng)頁一開始加載就連續(xù)的彈出來,心想,也應(yīng)該是在JS一開始加載的地方,在Jquery加載之前,這里值得一提的是,這段惡意代碼也非常有技術(shù)含量!
可以看出,在Jquery加載之前,輸出了一段Javascript引用,代碼是引用了一張圖片 link5.jpg ,好,把這張圖片download下來看看
也是很普通的一張圖片,但是你以為這真的是一張普普通通的圖片你就錯了,還記得以前在網(wǎng)上見過一張傳聞有"內(nèi)涵”的圖片,打開也是一張普通的圖片,但是用記事本打開之后,里面島國的種子地址(聲明:我并沒有下載)所以,用記事本打開它來看看究竟。
其中,document.referrer是獲取網(wǎng)站的來源,比如從百度過來的,referrer="www.baidu.com",很多網(wǎng)站都是利用這個HTTP的屬性來防止盜鏈的,可見,他是判斷了有來源的話才會輸出他的廣告JS代碼,目的就是為了不讓站長容易發(fā)現(xiàn)彈窗廣告的問題。
從這次排查惡意代碼的經(jīng)歷可以看出,網(wǎng)站安全是多么重要的一件事,假如你沒有對用戶上傳的圖片進(jìn)行檢查,網(wǎng)站就會留下很大的隱患,所以單靠檢查文件后綴是不行的,這方面博客園做得比較好,發(fā)布這篇隨筆的時(shí)候,link5.jpg 這張圖片無法上傳!