為您提供各行業(yè)互聯(lián)網(wǎng)私人定制開(kāi)發(fā)解決方案
程序員群嘲紅芯瀏覽器:注釋過(guò)度很業(yè)余 創(chuàng)新混淆視聽(tīng)
處于風(fēng)口浪尖的紅芯瀏覽器,其中的兩款插件代碼被公開(kāi)以后,在程序員群體中打開(kāi)了“群嘲”模式。
8月16日,自稱“打破美國(guó)壟斷,中國(guó)首個(gè)自主創(chuàng)新智能瀏覽器內(nèi)核”的紅芯瀏覽器,被網(wǎng)友發(fā)現(xiàn)“只是谷歌瀏覽器換了一層皮”——紅芯瀏覽器安裝包解壓后發(fā)現(xiàn),最終可以得到一個(gè)版本號(hào)為49.1.2623.213的Chrome文件。
目前,在紅芯瀏覽器的安裝包中有兩個(gè)瀏覽器插件可以看到源代碼,不少互聯(lián)網(wǎng)工程師通過(guò)閱讀代碼發(fā)現(xiàn),紅芯的代碼存在過(guò)度注釋、代碼冗余、語(yǔ)言陳舊等問(wèn)題,甚至還有工程師測(cè)試后發(fā)現(xiàn),它在插件的保密性上存在虛假宣傳。
一位從事數(shù)據(jù)相關(guān)業(yè)務(wù)的工程師對(duì)澎湃新聞?dòng)浾弑硎荆?strong>紅芯瀏覽器插件的源代碼中存在大量的注釋,顯得注釋過(guò)度。一般熟練的程序員日常寫代碼時(shí)不會(huì)所有內(nèi)容都進(jìn)行注釋,簡(jiǎn)單的接口不用注釋,也不用重復(fù)注釋。
“注釋的主要功能是提醒程序員某一段代碼的用途,但每一句都加注釋,太浪費(fèi)工作效率,而且顯得十分業(yè)余。”一位從事汽車軟件開(kāi)發(fā)的工程師這樣說(shuō)道。
另一位來(lái)自外資科技公司的程序員則向記者評(píng)價(jià)稱:“中文注釋說(shuō)明水平可能不高,說(shuō)明懂英文的人不多?!?/p>
而且,一位程序員認(rèn)為,產(chǎn)品上線后大量注釋都沒(méi)有處理,沒(méi)辦法期待它有什么安全性可言的,“注釋就是解釋程序運(yùn)行的文檔,產(chǎn)品上線之后一般是要去掉的,防止被其他人摸清運(yùn)行機(jī)制后進(jìn)行攻擊,這是最基本的安全意識(shí)?!?/p>
而另一個(gè)比較顯著的問(wèn)題是,紅芯的代碼被指層層復(fù)制,存在大量冗余的內(nèi)容。
“以密碼管家這款插件為例,它的源代碼中,一個(gè)僅350行的文件就有100行是重復(fù)的。說(shuō)明寫該插件代碼的程序員不懂封裝,即把代碼中相同的部分抽象成一個(gè)單獨(dú)的函數(shù)?!币晃怀绦騿T指出。
“有些重復(fù)的代碼可以寫成一個(gè)函數(shù)。業(yè)務(wù)邏輯通過(guò)參數(shù)傳進(jìn)去?!币晃还こ處熛蚺炫刃侣?dòng)浾叽虮确椒Q,“比如要得到某人老公的姓名,用函數(shù)實(shí)現(xiàn)的話,就是輸入‘孫儷’得到‘鄧超’,而不用寫孫儷老公鄧超、楊穎老公黃曉明等好多個(gè)?!?/p>
另外,還有程序員向記者指出,上述插件代碼中,大量使用常量字符串,這使得之后可能的重構(gòu)變得非常困難,以及不利于國(guó)際化等進(jìn)一步開(kāi)發(fā)。此外還充斥著大量面條式代碼,導(dǎo)致開(kāi)發(fā)人員閱讀和后續(xù)開(kāi)發(fā)困難。(編注:面條式代碼,指源代碼的控制流程復(fù)雜,混亂難以理解。)
一位在出行互聯(lián)網(wǎng)公司工作的工程師在看過(guò)紅芯插件的代碼后表示:“水平還湊合,就是寫法有些陳舊,差不多是四五年前的寫法吧?!边@一說(shuō)法得到另一位工程師的認(rèn)同:“代碼中大量使用的jQuery是12年前發(fā)布的,已經(jīng)過(guò)時(shí),使得代碼冗長(zhǎng)不易讀懂”。
一位資深前端工程師則指出,現(xiàn)在市面上成熟的前端團(tuán)隊(duì)很少使用JavaScript語(yǔ)言,為了工程化都是用Typescript進(jìn)行工程構(gòu)建的?!凹t芯的代碼不僅是JavaScript,還是第六版之前的風(fēng)格,沒(méi)有經(jīng)過(guò)代碼構(gòu)建和混淆以及去注釋、壓縮等過(guò)程。這是嚴(yán)重缺乏專業(yè)性的表現(xiàn),一般這種代碼只會(huì)在外包代碼中出現(xiàn)?!?/p>
除了代碼的被指顯得不夠?qū)I(yè),更值得注意的是,紅芯瀏覽器插件在數(shù)據(jù)安全方面也值得商榷。
一位程序員試驗(yàn)發(fā)現(xiàn),紅芯的密碼管家插件中所存儲(chǔ)的密碼僅存儲(chǔ)于本地并且沒(méi)有加密,即用戶可知道使用同一臺(tái)計(jì)算機(jī)的其他人的密碼。
該程序員向澎湃新聞?dòng)浾咧赋觯ㄟ^(guò)閱讀密碼管家的代碼,發(fā)現(xiàn)存在密碼管家里的密碼都是明文存在一個(gè)叫做“l(fā)ocal storage”的地方,local storage在chromium里是存在一個(gè)本地的sqlite數(shù)據(jù)庫(kù)文件里,并且這個(gè)數(shù)據(jù)庫(kù)文件沒(méi)有加密。這個(gè)文件被存在每個(gè)用戶的AppData文件夾里。
插件將明文密碼存在local storage中,存在本地的sqlite數(shù)據(jù)庫(kù)的文件沒(méi)有被加密。
紅芯瀏覽器的官網(wǎng)產(chǎn)品介紹稱,其數(shù)據(jù)緩存及存儲(chǔ)層使用了數(shù)據(jù)加密箱。然而該程序員發(fā)現(xiàn),經(jīng)他試驗(yàn),紅芯瀏覽器的數(shù)據(jù)緩存并未如其宣稱的那樣進(jìn)行加密。
8月16日晚,紅芯時(shí)代(北京)科技有限公司發(fā)布聲明稱:紅芯瀏覽器內(nèi)核是基于通用的瀏覽器內(nèi)核架構(gòu)(即Chromium開(kāi)源項(xiàng)目,但不是Chrome瀏覽器)的基礎(chǔ)上進(jìn)行技術(shù)創(chuàng)新的;區(qū)別于傳統(tǒng)的瀏覽器,紅芯瀏覽器是專門針對(duì)企業(yè)辦公場(chǎng)景設(shè)計(jì)的國(guó)際上瀏覽器內(nèi)核技術(shù)是不斷迭代更新的,紅芯瀏覽器內(nèi)核 Redcore是基于 Chromium/Bnk。
對(duì)此,不少程序員紛紛吐槽,紅芯瀏覽器套用的谷歌49.1.2623.213版本的Chrome文件,是比較陳舊的版本,因?yàn)檫@是谷歌瀏覽器Chrome最后一個(gè)支持Windows XP系統(tǒng)的版本,而紅芯瀏覽器是支持XP系統(tǒng)的。
“這說(shuō)明他們連最起碼的代碼修改都不會(huì),360瀏覽器也是基于Chrome內(nèi)核,用的是最新的69版本,它們就做了XP的適配?!币晃怀绦騿T告訴記者。
紅芯時(shí)代在聲明中稱,Redcore內(nèi)核的技術(shù)創(chuàng)新體現(xiàn)在以下三方面:第一,紅芯隱盾該功能主要是讓企業(yè)的應(yīng)用系統(tǒng)隱身,只對(duì)特定身份和設(shè)備可見(jiàn),從而有效避免外部可能的攻擊。第二,紅芯云適配,主要是將企業(yè)PC端系統(tǒng)適配至移動(dòng)端,從而幫助企業(yè)快速實(shí)現(xiàn)移動(dòng)辦公;第三,安全可控瀏覽器,通過(guò)私有DNS、加密緩存國(guó)密算法支持等功能,幫助企業(yè)迸行數(shù)據(jù)保護(hù)和隱私保護(hù)這些功能都源自于企業(yè)客戶的需求。
一位資深的前端工程師向澎湃新聞?dòng)浾咧毖裕t芯時(shí)代所稱的三點(diǎn)創(chuàng)新“完全是在混淆視聽(tīng)”。
“因?yàn)樗麄兪峭ㄟ^(guò)瀏覽器插件的形式實(shí)現(xiàn)的,他們將話題鎖定在瀏覽器上,讓公眾以為瀏覽器是他們的創(chuàng)新。而打開(kāi)Chrome插件市場(chǎng),類似功能的插件可以說(shuō)是非常多的。” 該工程師解釋道,“至于價(jià)值,好的瀏覽器插件是有可能有千萬(wàn)級(jí)估值的,但是現(xiàn)在Chrome插件市場(chǎng)整體不景氣,高質(zhì)量的Chrome插件應(yīng)該有百萬(wàn)左右的價(jià)值。但我不認(rèn)為紅芯的插件是高質(zhì)量插件。”
8月15日,紅芯宣布完成2.5億元C輪系列戰(zhàn)略融資。據(jù)稱,這輪融資投資方主要來(lái)源于紅芯的客戶——大型上市公司及政府客戶。同時(shí),晨興資本、達(dá)晨創(chuàng)投、IDG資本繼續(xù)跟進(jìn)投資。