资讯专栏INFORMATION COLUMN

「前端早读君005」开源与安全:Ant Design圣诞“彩蛋”事件始末

zhangyucha0 / 3303人阅读

摘要:事件起因是蚂蚁金服的开源项目框架的开发者别出心裁地在组件上埋下了一个在圣诞节当天触发的彩蛋。因此,面对这样的局面,我们能指望的,更多是靠开源作者们遵循某种开源精神,至少像圣诞彩蛋事件,是应该可以避免的。

2018年的圣诞节,让素有IT娱乐圈称谓的前端圈着实又热闹了一把。事件起因是蚂蚁金服的开源项目Ant Design 框架(react-ui)的开发者别出心裁地在button组件上埋下了一个在圣诞节当天触发的“彩蛋”。

Ant Design 项目在 9 月 10 日的一个 commit中增加了 button的圣诞彩蛋样式(见下图)

也就是说在这次 commit 后下载或更新此项目的用户都会在 isChristmas12 月 25 日的 button会自动变成 christmas样式

而这样突如其来的变化,让诸多开发者“一脸懵逼”。因为 Ant Design 项目本身已经有非常大量的用户,在 GitHub上有超过 3.7 万的 Star,而 NPM上也展示每周有超过 30 万次下载。

该代码会在 12 月 25 日当天给所有按钮添加积雪效果,并增加 Ho Ho Ho! 的浏览器默认提示信息。

而随之而来的,是部分开发者的愤怒和指责

也有部分开发者表示理解

Ant Design的开发者显然没想到这个彩蛋会引起如此的渲染大波,并且以千万级别的热点迅速冲上了知乎热榜第二名。

![clipboard.p

Ant Design 的项目issue也瞬间被点燃

项目的开发者也第一时间作了说明并且进行道歉

回归理性,事实上,作为开发者,我们是打心里应该感谢Ant Design 的开发者们,我们可以在github上看到该项目高达38000左右的star,这无疑是全球前端开发者对该项目的认可和肯定。正是因为该项目在前端圈中有大量的使用者,才导致事件影响巨大。

然而让笔者担忧的并非是这个彩蛋,结合还没过去多久的被污染的 npm 包event-stream事件(一个著名的 npm 包 event-stream 的作者,将其转让给了一个恶意用户 right9ctrl。这个包每个月有超过 150万 次下载,同时其被 1,600 个其它的 npm 包依赖。),真正应该引起开发者担忧和思考的是什么?就是如何保障引用第三方模块的安全。

很多软件由于长期使用第三方库文件,导致了持续的安全问题。而在程序开发设计阶段,开发者又经常忽略了第三方库代码的漏洞审查,甚至有些资源库(repositories)直接被信手拈来使用,从根本上就缺乏了安全审计。

如果某个库文件存在漏洞,那么,大量使用了该库文件的软件程序都将面临安全威胁。

这种场景,在现实世界中已经有了血淋淋的证明:如OpenSSL中出现的心脏滴血漏洞(Heartbleed)、GNU Bash出现的破壳漏洞(Shellshock)和Java中的反序列化漏洞(Deserialization),这些都是实际应用程序中,存在第三方资源库或应用框架漏洞的典型案例。

Github作为最大的开源资源库,它托管着4900万个公共和私人项目,拥有1800万用户。

据其安全负责人Shawn Davenport介绍,Github不对托管代码进行审查或警告,用户可以根据需求使用第三方工具,如Gemnasium、Brakeman和Code Climate等,进行代码动态或静态分析。

Davenport说,“很多托管项目都存在安全隐患,我们只能尽量保证整个资源库的安全,同时让用户明白他们需要什么样的代码审查工具。从项目角度来说,安全并不是开发者的首要责任”。

据Davenport估计,Github上只有少数用户在使用代码安全审查工具。

而对于绝大部分开发者而言,阅读第三方库的代码更是很难完成的一件事情,这意味着你要投入巨大的精力,何况对于部分开发者而言,并不具备代码审查技术能力。

因此,面对这样的局面,我们能指望的,更多是靠开源作者们遵循某种开源精神,至少像圣诞彩蛋事件,是应该可以避免的。

开源的责任

开源是为了更好地协作开发出解决用户需求的软件

一但一个高复杂度的项目获得了高市占率,开发者则难以迁移

为什么开源即责任?因为一个好的软件项目是为了服务好用户,选择开源模式,本身就是选择了一个为解决复杂问题提供通用(高市占率)解决方案的途径。选择开源模式,即提高了普及项目的速度,也就提高了你的软件被更多人依赖的可能。这也就是为什么,开源即责任。当数亿台服务器运行着 Linux 服务的时候,那些躺在 Mailing List 里的一次次为哪怕一行代码的长篇争论,都让人无比敬畏。

就像部分开发者对事件的评论一样,我们知道也并理解Ant Design 开发者是出于一种好意而埋下的彩蛋,但是作为Ant Design 的最终使用者,这个彩蛋的开启与否的决定权应当交到使用者手里。希望经过这次事件,Ant Design的开发者能从更专业的角度和严谨的态度去评估他们每一个改动对数以万计的开发者的影响。

最后

感谢开源,感谢贡献!愿春节没有彩蛋。

微信扫一扫关注早读君,每天早晨为你推送前端知识,度过挤地铁坐公交的时光。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/100532.html

相关文章

  • 前端早读005开源安全Ant Design圣诞彩蛋事件始末

    摘要:事件起因是蚂蚁金服的开源项目框架的开发者别出心裁地在组件上埋下了一个在圣诞节当天触发的彩蛋。因此,面对这样的局面,我们能指望的,更多是靠开源作者们遵循某种开源精神,至少像圣诞彩蛋事件,是应该可以避免的。 2018年的圣诞节,让素有IT娱乐圈称谓的前端圈着实又热闹了一把。事件起因是蚂蚁金服的开源项目Ant Design 框架(react-ui)的开发者别出心裁地在button组件上埋下了...

    roland_reed 评论0 收藏0
  • 我们在开源项目中是怎样埋彩蛋

    摘要:在开源软件中,加彩蛋是一种乐趣,并不为奇,同为知名组件库的项目,也经常在文档中埋藏很多彩蛋,不过仅仅是在文档中,组件库中是没有的。本来就来介绍下我们在开源项目中是怎样埋彩蛋的。 今天的 AntDesign 圣诞节彩蛋事件确实炸开了锅,加彩蛋的初衷是好的,只是这次玩过了火。 在开源软件中,加彩蛋是一种乐趣,并不为奇,同为知名 UI 组件库的 iView 项目,也经常在 文档 中埋藏很多彩...

    Little_XM 评论0 收藏0
  • 前端早读004」函数柯里化(Currying)小实践

    摘要:更安全地藏私房钱实际上,每天记录下当前的数据是不灵活的,而函数柯里化则有效地解决了这个问题。而且不定时举办活动赠送书籍哦 什么是函数柯里化 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。这个技术由 Christopher Strachey 以逻辑学家 Haskell ...

    Barry_Ng 评论0 收藏0
  • 前端早读004」函数柯里化(Currying)小实践

    摘要:更安全地藏私房钱实际上,每天记录下当前的数据是不灵活的,而函数柯里化则有效地解决了这个问题。而且不定时举办活动赠送书籍哦 什么是函数柯里化 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。这个技术由 Christopher Strachey 以逻辑学家 Haskell ...

    light 评论0 收藏0
  • 前端早读006」移动开发必备:那些玩转H5的小技巧

    摘要:今日励志语录有志者自有千计万计,无志者只感千难万难。三动画技术越来越不陌生,使用门槛也渐渐降低,而且动画还可以使用控制。扫一扫查看效果打开微扫一扫关注早读君,每天早晨为你推送前端知识,度过挤地铁坐公交的时光 今日励志语录有志者自有千计万计,无志者只感千难万难。 文章原出处:腾讯ISUX 开始阅读之前你可以先扫一扫体验demoshowImg(https://segmentfault.co...

    LittleLiByte 评论0 收藏0

发表评论

0条评论

zhangyucha0

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<