我的博客Blog

    处于风口浪尖的红芯浏览器,其中的两款插件代码被公开以后,在程序员群体中打开了“群嘲”模式。8 月 16 日,自称“打破美国垄断,中国首个自主创新智能浏览器内核”的红芯浏览器,被网友发现“只是谷歌浏览器换了一层皮”——红芯浏览器安装包解压后发现,最终可以得到一个版本号为 49.1.2623.213 的 Chrome 文件。

  

目前,在红芯浏览器的安装包中有两个浏览器插件可以看到源代码,不少互联网工程师通过阅读代码发现,红芯的代码存在过度注释、代码冗余、语言陈旧等问题,甚至还有工程师测试后发现,它在插件的保密性上存在虚假宣传。

  

一位从事数据相关业务的工程师对澎湃新闻记者表示,红芯浏览器插件的源代码中存在大量的注释,显得注释过度。一般熟练的程序员日常写代码时不会所有内容都进行注释,简单的接口不用注释,也不用重复注释。

  

“注释的主要功能是提醒程序员某一段代码的用途,但每一句都加注释,太浪费工作效率,而且显得十分业余。”一位从事汽车软件的工程师这样说道。

  

另一位来自外资科技公司的程序员则向记者评价称:“中文注释说明水平可能不高,说明懂英文的人不多。”

  

而且,一位程序员认为,产品上线后大量注释都没有处理,没办法期待它有什么安全性可言的,“注释就是解释程序运行的文档,产品上线之后一般是要去掉的,防止被其他人摸清运行机制后进行攻击,这是最基本的安全意识。”


1534520314(1).jpg

  

红芯浏览器插件代码几乎每一行都有中文注释。


而另一个比较显著的问题是,红芯的代码被指层层复制,存在大量冗余的内容。

  

“以密码管家这款插件为例,它的源代码中,一个仅 350 行的文件就有 100 行是重复的。说明写该插件代码的程序员不懂封装,即把代码中相同的部分抽象成一个单独的函数。”一位程序员指出。

  

“有些重复的代码可以写成一个函数。业务逻辑通过参数传进去。”一位工程师向澎湃新闻记者打比方称,“比如要得到某人老公的姓名,用函数实现的话,就是输入‘孙俪’得到‘邓超’,而不用写孙俪老公邓超、杨颖老公黄晓明等好多个。”

  

另外,还有程序员向记者指出,上述插件代码中,大量使用常量字符串,这使得之后可能的重构变得非常困难,以及不利于国际化等进一步开发。此外还充斥着大量面条式代码,导致开发人员阅读和后续开发困难。(编注:面条式代码,指源代码的控制流程复杂,混乱难以理解。)

  

一位在出行互联网公司工作的工程师在看过红芯插件的代码后表示:“水平还凑合,就是写法有些陈旧,差不多是四五年前的写法吧。”这一说法得到另一位工程师的认同:“代码中大量使用的 jQuery 是 12 年前发布的,已经过时,使得代码冗长不易读懂”。

  

一位资深前端工程师则指出,现在市面上成熟的前端团队很少使用 JavaScript 语言,为了工程化都是用 Typescript 进行工程构建的。“红芯的代码不仅是 JavaScript,还是第六版之前的风格,没有经过代码构建和混淆以及去注释、压缩等过程。这是严重缺乏专业性的表现,一般这种代码只会在外包代码中出现。”

  

除了代码的被指显得不够专业,更值得注意的是,红芯浏览器插件在数据安全方面也值得商榷。

  

一位程序员试验发现,红芯的密码管家插件中所存储的密码仅存储于本地并且没有加密,即用户可知道使用同一台计算机的其他人的密码。

  

该程序员向澎湃新闻记者指出,通过阅读密码管家的代码,发现存在密码管家里的密码都是明文存在一个叫做“local storage”的地方,local storage 在 chromium 里是存在一个本地的 sqlite 文件里,并且这个数据库文件没有加密。这个文件被存在每个用户的 AppData 文件夹里。


  

插件将明文密码存在 local storage 中,存在本地的 sqlite 数据库的文件没有被加密。


红芯浏览器的官网产品介绍称,其数据缓存及存储层使用了数据加密箱。然而该程序员发现,经他试验,红芯浏览器的数据缓存并未如其宣称的那样进行加密。


1534520394(1).jpg

  

程序员测试发现,红芯浏览器插件没有实现产品宣传中的数据加密沙箱功能。

  

8 月 16 日晚,红芯时代(北京)科技有限公司发布声明称:红芯浏览器内核是基于通用的浏览器内核架构(即 Chromium 开源项目,但不是 Chrome 浏览器)的基础上进行技术创新的;区别于传统的浏览器,红芯浏览器是专门针对企业办公场景设计的国际上浏览器内核技术是不断迭代更新的,红芯浏览器内核 Redcore 是基于 Chromium/Bnk。

  

对此,不少程序员纷纷吐槽,红芯浏览器套用的谷歌 49.1.2623.213 版本的 Chrome 文件,是比较陈旧的版本,因为这是谷歌浏览器 Chrome 最后一个支持 Windows XP 系统的版本,而红芯浏览器是支持 XP 系统的。

  

“这说明他们连最起码的代码修改都不会,360 浏览器也是基于 Chrome 内核,用的是最新的 69 版本,它们就做了 XP 的适配。”一位程序员告诉记者。

  

红芯时代在声明中称,Redcore 内核的技术创新体现在以下三方面:第一,红芯隐盾该功能主要是让企业的应用系统隐身,只对特定身份和设备可见,从而有效避免外部可能的攻击。第二,红芯云适配,主要是将企业 PC 端系统适配至移动端,从而帮助企业快速实现移动办公;第三,安全可控浏览器,通过私有 DNS、加密缓存国密算法支持等功能,帮助企业迸行数据保护和隐私保护这些功能都源自于企业客户的需求。

  

一位资深的前端工程师向澎湃新闻记者直言,红芯时代所称的三点创新“完全是在混淆视听”。

  

“因为他们是通过浏览器插件的形式实现的,他们将话题锁定在浏览器上,让公众以为浏览器是他们的创新。而打开 Chrome 插件市场,类似功能的插件可以说是非常多的。” 该工程师解释道,“至于价值,好的浏览器插件是有可能有千万级估值的,但是现在 Chrome 插件市场整体不景气,高质量的 Chrome 插件应该有百万左右的价值。但我不认为红芯的插件是高质量插件。”

 

8 月 15 日,红芯宣布完成 2.5 亿元C轮系列战略融资。据称,这轮融资投资方主要来源于红芯的客户——大型上市公司及政府客户。同时,晨兴资本、达晨创投、IDG 资本继续跟进投资。

  

红芯科技创始人:承认宣传有误,加密传输等方面超越谷歌

  

谷歌浏览器的开源项目 Chromium 开放源代码,允许全球的开发者进行二次研发。比如猎豹、360 浏览器都使用了这一代码,作为免费开放的项目,谷歌唯一的要求就是,无论拿代码做免费还是收费的浏览器都可以,但必须遵循开源协议,在产品中标明使用了 Chromium 源代码。可红芯浏览器,一面宣称自主创新,比肩四大浏览器内核,却没有写明使用了 Chromium。对于网友的质疑,陈本峰承认,的确有些问题:我们如果它协议里面有,我们确实应该对他进行感谢,我觉得如果说这点我们做得不对,我们就承认我们的错误。


红芯声称在加密数据传输等方面,强于谷歌浏览器红芯声称在加密数据传输等方面,强于谷歌浏览器。

  

虽然承认宣传有误,但红芯 CEO 陈本峰还是强调,红芯还是做了研发的,红芯浏览器在加密数据传输等方面,强于谷歌浏览器:“我们在浏览器内核上面做了实实在在的创新,跟汉芯一个很大的不同,其实我们做一家技术的公司,我们要真的要把 Chrome 这个东西,把文件名签名给改了,对我们来说那都是很容易的事,为什么我们没干?我们给客户提供的不是说因为我叫红芯你买我,而是因为我们刚才提供的这些功能”。