前言
下班了,沒想到這篇文章還能引起爭議,那就更新一波放在最開頭吧,
這里并沒有惡意攻擊jQuery的意思,只是部分官方渠道原始碼中確實存在垃圾網站,
另外大量的非官方渠道版本中確實存在賭博網站和黃色網址,
寫這個的目的,僅僅只是提醒各位自查和覺得有趣,
還有我寫文章主要是給自己看,沒想過博眼球,也不需要粉絲,不要以小人之心度君子之腹,
要博眼球我去B站發視頻每年還能拿個幾千,到這寫就是為了玩,
以下為原文:
jQuery原始碼中有賭博網站?
起因是公司發的一份自查檔案,某銀行在日常安全運營程序中發現在部分jQuery原始碼中存在賭博和黃色網站鏈接,
鏈接分為好幾個:

博客園不讓我直接貼地址,所以馬賽克了,你們根據欄位自己搜吧,
如果你的代碼中使用了jQuery或者間接使用了jQuery,請最好自查一下,
不要以為只有從網上隨便抄來的jQuery原始碼才會存在這個問題,正常的jQuery原始碼也可能有,比如阿里的CDN上的jQuery原始碼中就有,
自查jQuery發現存在問題,追溯至阿里的CDN
在如今React和Vue,Angular占據前端主流的情況下,仍有大量的網站使用jQuery,
不過因為我現在做的專案比較新,并且使用React,所以以為這份自查檔案跟我完全沒關系,
只是因為以前見識過有人在開源js代碼中埋挖礦的代碼,所以謹慎起見還是查了查,沒想到我還真的查出了點東西,
自查步驟:
- 第一步,我在代碼中全域搜索上面三個網址,沒發現問題,果然符合預期,
- 第二步,為了保險起見,我搜了node_modules里的檔案,還是沒有發現問題,符合預期,
- 第三步,全域搜索jQuery這個字串,因為據自查檔案描述這個問題主要存在于jQuery中,專案中除了single-spa原始碼對jQuery做了兼容處理,其他代碼一切正常,沒有參考jQuery的地方,
只是有個地方有點奇怪,我在一個奇怪的demo.html中,發現了下面這行參考:
<!-- jQuery -->
<script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>
上面標注了一個jQuery,下面是一個阿里的CDN的地址,
那么這個參考里面是個jQuery?查一查吧,
打開這個js,搜索三個網址,最后真的找到了一個,代碼如下:

麻了,是個注釋,但是這個網站真的存在,還是個中文站點呢,
這個網站雖然不是賭博網站,但是怎么看都不是那么正經,并且和jQuery完全沒關系,
然后我又查了一下這個demo.html的來源,來自阿里的矢量圖示庫網站:https://www.iconfont.cn/,做前端的對這個站點應該非常熟悉,
然后這個demo.html就是下載個人專案的圖示庫后的演示用例,

正常情況下應該是用不到這個東西的,所以直接刪掉就好了,不過阿里有沒有別的地方用到這個CDN檔案就不好說了,
思考
這次我們在阿里CDN上的jQuery庫中都能發現賭博網站的鏈接,
雖然它是個注釋,但是萬一它不是呢?
畢竟這三個網址中可能就這個溫和點,另外兩個據描述直接重定向到黃色網站和賭博網站,
這個溫和點的其實也沒有那么溫和,當這個jQuery檔案被一些信譽度較高的站點,比如政府站點參考后,即使是注釋里的網址可能也會被一些搜索引擎決議后用于提高這個垃圾網站的信譽度,
更新:根據評論猜測,也可能是這個個人站點沒維護后,被一些人獲取用于指向垃圾網站,我認為這種可能性還真的大點,但是另外兩個網址真的是非常惡意,因為它們直接改原始碼了,
這個事情其實只是冰山一角而已,采用的方式雖然隱蔽但也總算有跡可循,之前爆出的js挖礦代碼,更加隱蔽,
不談這種參考外鏈的方式,對現在的前端而言,node_modules更是一個大黑盒,
主流的React這類別庫可能安全性還行,畢竟一天到晚讀原始碼背八股文面試的朋友那么多,所以沒什么問題,
像很多依賴庫都是一兩個人維護,就算他們不使壞,依賴庫的依賴庫呢?
這么龐大的依賴庫鏈,實際上隱藏著的是巨大的安全隱患,
像上面提到的這個網站,你看鏈接里有個2009,可見這玩意并不年輕,一直默默地在每個jQuery網站中運行,并沒有被人發現,
那么更多的這種代碼是不是已經存在于各種各樣的網站中了呢?
無腦復制粘貼的前端那么多,他們甚至都不愿意讀一下自己復制的代碼,更何況審查依賴庫?
如果今天阿里這個CDN里面埋的是個挖礦代碼,那么我們的討論風格還會這么輕松有趣嗎?
想了想,答案是:更加有趣了,O(∩_∩)O
作者:韓子盧出處:https://www.cnblogs.com/vvjiang/
本博客文章均為作者原創,轉載請注明作者和原文鏈接,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/373914.html
標籤:JavaScript
上一篇:Web/JS:使用innerHTML動態加入html導致按鈕失效
下一篇:JS資料扁平化
