前大疆程序员离职后,把代码上传 GitHub,令公司损失百万新手入门_github基础知识教程

该员工之前在大疆的子公司担任软件工程师,公司对他很器重,负责编写农业无人机的管理平台和农机喷洒系统代码。他在Github 开设账号,并建立了“公有仓库”,把代码上传至了 GitHub 公有仓库。经鉴定,大疆这些泄露出去的代码具有非公知性,且已用于该公司农业无人机产品,属于商业秘密。经评估,这次泄漏公司造成经济损失116.4万元人民币。案发后,这位员工第一时间

前大疆程序员离职后,把代码上传 GitHub,令公司损失百万新手入门

该员工之前在大疆的子公司担任软件工程师,公司对他很器重,负责编写农业无人机的管理平台和农机喷洒系统代码。他在Github 开设账号,并建立了“公有仓库”,把代码上传至了 GitHub 公有仓库。

前大疆程序员离职后,把代码上传 GitHub,令公司损失百万新手入门_github基础知识教程

经鉴定,大疆这些泄露出去的代码具有非公知性,且已用于该公司农业无人机产品,属于商业秘密。经评估,这次泄漏公司造成经济损失116.4万元人民币。

案发后,这位员工第一时间删除了相关代码,并积极配合调查,防止事态扩大。他在推特上表示,“无意泄露了大疆的机密”、“我很后悔自己没有法律意识,我愿意承担相应的法律责任。”

通过这件事,其实也给我们程序员一个特别的警示,公司的代码属于公司所有,对于一个高新技术企业来讲,源代码意味着高新企业的财产权、竞争力乃至生命线,是公司千方百计保护的对象。我们不应该随意上传代码至公开社区,或者故意泄露,这都是一种违法行为。

当然,之前 GitHub 私有库是收费的,所以很多人都把代码上传到公有库,现在 GitHub 私有库也免费了,但是这并不是意味着大家就可以把公司代码上传至私有库中。我的建议:最好是不要。

为什么会频繁发生员工把公司代码上传到 GitHub 公有库的事件呢?我认为无非就两种原因。

从个人层面上来讲

从个人层面上来讲,法律意识淡薄只是一方面,另外一个方面就是对于代码的所有权,以及代码的安全性重视不够。当然,可能有的程序员会认为把代码上传到 GitHub 上可以作为备份,进行代码的管理,就是防止代码丢失。但是没有意识到公开库的危害性。

从公司层面来讲

从公司层面来讲,可能没有对代码的管理以及代码安全性的重要性对员工进行普及和教育。员工之所以把代码上传至 GitHub 备份,可能公司没有进行代码管理的仓库以及代码管理的规范。像大疆这样的大公司,应该有代码管理工具,员工之所以能够上传至 GitHub ,可能没有做到安全性的普及。

所以,每个公司,每个程序员都应该重视,从公司层面上来讲,应该给员工提供代码管理的仓库和工具,进行统一管理,另外加强员工对代码安全性和代码管理的意识。程序员自身也应该加强代码安全管理的意识,不应该随意把代码上传至别的地方。

即使是个人代码,也应该加强安全意识!

公司的代码,尤其是后端服务器代码,可能会有很多加密和解密 secret,key 之类的,也有数据库密码,这些密码和隐私安全信息一旦泄露,就会引起很大的安全事件。

你以为个人代码就可以随意上传了么?不是的。

很多程序员都喜欢在 GitHub 上开源自己的代码,分享自己的成果。可是在分享代码的同时就把自己的密码给分享出来了。举个例子:比如你开源了一个客户端代码,里面有登录功能,可能为了模拟登录,你自己在代码中写了一个死密码,由于个人习惯原因,你可能写的测试账号的密码就是你经常用的账户密码。从此,你也开始裸奔了。

而有的程序员会用 Python 去爬虫 GitHub 上的开源代码,用正则表达式去匹配可能出现密码的地方,收集密码,果不其然,收集到了很多密码,而 GitHub 上的账号名字是可见的,密码已有,账号也可见,所以,很多程序员也开始在 GitHub 上裸奔了。

而在现在的人,为了方便管理和记忆,特别喜欢多个平台,多个软件使用同一个用户名,同一个密码,一旦泄露一个,就相当于自己在互联网上的所有平台,软件上的账户和密码泄露了。

你说你是不是就「裸奔」了?

所以,我想说:即使是个人的代码,在上传至 GitHub 做开源的时候,涉及到密码的地方,一定要注意保护隐私,不要使用自己的真实密码,应该修改后再上传。这就是代码的安全意识。

在如今这个众人裸奔的时代,我们一定要加强安全意识,不仅仅是代码的安全意识,更应该注意保护自己的隐私。

更多资讯,编程学习,关注v-x公众号:mtbcxx

海计划公众号
(0)
上一篇 2020/03/30 07:19
下一篇 2020/03/30 07:19

您可能感兴趣的内容

  • cheatsheet基础知识入门_Vue.js完整的API 速查表

    cheatsheet基础知识入门 官方网址:https://vuejs-tips.github.io/cheatsheet GitHub:https://github.com/vu…

    2020/03/07
  • ES6小白指南 中对象解构小技巧基础教程_解构

    1.解构的同时赋予初始值(使用 =)let target = { name: ‘Tony’,age: 32 }
    let { name,age, birth=1993 } = target
    console.log(name, age, birth)
    // Tony 32 1993
    2.使用的变量名与解构目标的key不一致或要使用多个变量(使用 : )let t

    2020/03/24
  • 如何较为优雅地实现新手引导功能?使用帮助_引导菜鸟指南

    早期的项目中晓衡遇到游戏终于要完成了,辛苦了一阵满以为可以稍微放松一下了,但策划、运营要求,增加一个他们认为非常“简单”且重要的功能: 新手引导 。回想起当年,接到这个任务时的感觉是手脚冒汗、天晕地暗、日月无光,游戏代码本来就千疮面孔,逻辑错综复杂,根本不知道该怎么下手?更困难的是,游戏本身功能和需求还不稳定,老板随便一个想法可能就会被改、改、改…,我该

    2020/03/23
  • web图片前端裁剪功能实现小白常识利用html5 canvas技术实现图片裁剪_canvas入门基础教程

    用户上传头像然后截图的需求很常见,很多做法是把图像发送到后端,把裁剪后的结果发送给浏览器,这种方式会增加处理时延。最近正好学习了HTML5里的canvas,发现它的图片处理功能比较强大,就打算用canvas提供的API实现纯前端的剪切。这里头关键有三步:显示未经处理的图片,得到裁剪区域,显示裁剪后的区域。我们分别讨论:1. 显示未经处理的图片 创

    2020/04/05
  • CSS波纹动画基础教程_动画小白教程

    在此运用到css的动画属性,以及背景等相关属性。值得一说的是下面代码中一直写到的这样一行代码:filter: alpha(opacity=0~100) ,这是考虑到浏览器兼容的问题。IE使用私有属性filter:alpha(opacity),Moz Family使用私有属性-moz-opacity,而标准的属性是opacity(CSS 3, Moz Fami

    2020/03/26
  • ant-design-pro指南教程_开箱即用的中台前端/设计解决方案

    ant-design-pro指南教程 官方网址:http://pro.ant.design/ GitHub:https://github.com/ant-design/ant-de…

    2020/03/06
  • vue单页面应用刷新网页后vuex的state数据丢失的解决方案小白知识_vuex攻略教程

    1. 产生原因其实很简单,因为store里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载vue实例,store里面的数据就会被重新赋值。2. 解决思路一种是state里的数据全部是通过请求来触发action或mutation来改变一种是将state里的数据保存一份到本地存储(localStorage、sessionStorage、cookie)中很

    2020/03/30
  • Fetch使用小白攻略_fetch小白常识

    Fetch API 提供了一个获取资源的接口(包括跨域请求)。任何使用
    过 XMLHttpRequest 的人都能轻松上手,但新的API提供了更强大和
    灵活的功能集。概念和用法Fetch 提供了对 Request 和 Response (以及其他与网络请求有关的)对象的通用定义。使
    之今后可以被使用到更多地应用场景中:无论是service workers、C

    2020/03/31
  • 网站优化重点注意事项教程视频_优化入门基础教程

    可能很多的小白还不清楚,网站优化的重点在哪里,到底是站内优化重要还是站外优化重要,要知道的是,百度除了相关说明的,外链对网站的帮助已经越来越小,但是并不是代表就可以不去做。无论是继续释放外链条还是调整突破的方向,都将在你站的高度执行。网站seo优化的重点网站优化的第一件事是用户需要理解,也就是说,通过百度搜索中的关键词,结合现有数据或经验,用户最想了解关键词

    2020/03/26
  • d3.csv()后获取的数据不是数组,而是对象小白基础_d3小白入门

    我的csv文件:year,population
    1953,5.94
    1964,6.95
    1982,10.08
    1990,11.34
    2000,12.66
    2010,13.40使用d3.csv()输出:d3.csv(“Data/data.csv”,function (error,data) {if(error){console.log(error)}conso

    2020/03/30
  • google-access-helper小白帮助_谷歌访问助手破解版

    google-access-helper小白帮助 官方网址:http://www.ggfwzs.com GitHub:https://github.com/haotian-wang…

    2020/03/11
  • 科技讯零基础入门_综合科技生活门户网站

    科技讯零基础入门 官方网址:http://www.kejixun.com/ 简介描述:综合科技生活门户网站 科技讯(www.kejixun.com)是综合科技生活门户网站,是您的网…

    2020/03/06
  • 木易杨菜鸟攻略_木易杨的博客,高级前端进阶之路

    木易杨菜鸟攻略 官方网址:https://muyiy.cn/ GitHub:https://github.com/yygmind/blog 简介描述:木易杨的博客,高级前端进阶之路…

    2020/03/10
  • 学习编程开发基础知识如何学习并掌握一门计算机编程语言_语言菜鸟攻略

    如果你有兴趣编写计算机程序,移动APP,网站,游戏或者任何软件,你应该学习编程。编程语言撰写的代码构建了计算机的程序。这个语言可以让程序让机器运行起来完成特写功能,机器指计算机、智能手机,其它任何的硬件产品中的一种。无论对于何种计算机编程语言,其核心编程思想都是一样的。算法以及解决问题的思想才是核心,编程只是一种实现算法及思想的工作。充分正确的认识这一点,对

    2020/04/03
  • jQuery :eq() 选择器基础知识教程_选择器攻略教程

    定义和用法:eq() 选择器选取带有指定 index 值的元素。index 值从 0 开始,所有第一个元素的 index 值是 0(不是 1)。经常与其他元素/选择器一起使用,来选择指定的组中特定序号的元素 选择第二个

    元素:$(“p:eq(1)”) 语法$(“:eq(index)”)参数描述index必需。规定元素的 index 值。:eq(ind

    2020/03/20
  • 4个开发 React 应用的实用技巧基础知识_技巧菜鸟指南

    背景Hooks 自推出以来就很火, 它改变了我们编写React 代码的方式, 有助于我们写更简洁的代码。今天这边文章不是说Hooks的,Hooks之外, 还有很多实用的技巧可以帮助我们编写简洁清晰的代码。今天我就整理了几个使用的技巧,其中有些也是我在公司项目中实践的,现在整理出来分享给大家, 希望对大家有所启发。1. 使用字符串来定义一个React元素举个简

    2020/03/23