建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

软件公司如何保障源代码不会被外泄?(软件公司如何保障软件代码安全)

GG网络技术分享 2025-03-18 16:10 3


谢谢邀请。防止源代码外泄这是一个常见的需求,不同的公司有不同的做法,包括技术和流程规范等,相关的解决方案有很多。这里介绍一种技术:VDI(虚拟桌面),感兴趣者可以评估一下。

VDI(Virtual Desktop Infrastructure)这里不多做解释,直译就是虚拟桌面基础设施,也是虚拟化技术的一种典型应用,其技术实质是程序运行在后台的服务器端,客户端(使用者的电脑)呈现的只是一个画面,思杰、VMware、深信服等都有这种技术,感兴趣可以自行百度。这种技术一大好处是:源代码集中保存在服务器端,代码根本不在研发人员的电脑中落地,这样可以防止代码被本地病毒等侵袭,还可以防止屏幕拷贝等非法操作;VDI的另一个好处是,采用这种技术后代码的拷贝、修改等行为都是可审计的,如果有恶意拷贝行为也可以及时发现。

这种技术其实已经存在多年,现在算是比较成熟了,对用户而言面临的挑战主要是成本(一套新架构,服务器、存储、网络成本都可能增加),以及用户体验。尤其是用户体验,因为计算不在本地电脑而是后台服务器,所以开发人员可能感觉反应比较慢。不过,近些年由于超融合的存在,用户体验有了很大改善,目前已经有些大型(过千人)的研发中心采用了这种技术来保护源代码。如果你的源代码的确非常重要,不妨考虑下这种技术。

本答案来自科技行者团队邹大斌

#####

有一种加密软件,只有在公司的电脑上源码才可以打开,如果拷贝出去,会变成乱码。

我们公司一直在使用,效果不错。不过对于前端开发不适用。前端代码从浏览器可以读到的,没法加密,不过前端代码价值低,主要保护服务器端代码就可以。

这种软件原理是代码写入硬盘的时候加密,本机注册过的软件读取的时候解密,很好用,你可以试试。

#####

防止源代码外泄是每个软件公司的重头戏,不仅是源代码,文档,记录,图片等产品资源,也要防止外泄。



小编认为,主要有3大方法:

1.设备防止。比如说可以采用虚拟桌面,让代码只能存储在服务器端。比如说禁止外设(USB,串口)访问工作电脑。比如说禁止带手机,相机等拍照工具进入研发室。比如说禁止工作电脑连接互联网,限制性连接内网。

2.法律保障。和员工签订竞业协业,保密协议。重罚并追求泄密员工或前员工的法律责任,并且当作案例宣传,教育员工。

3.人心保证。通过薪资待遇,言谈教育来指引,拉笼人心,使得员工有深刻的归属感,责任感,正义感,这样,员工才不会泄密,更是主动在保密上做好功夫。



人才是根本,其他只是辅助。请善待员工,厚待员工。



谢谢大家。

#####

一,避免程序员接触所有源代码

软件开发之前,将软件按照功能、层级划分为不同的模块,每个人负责其中一两个模块,再由团队中最值得信任的人来组合、封装,一般是技术总监。哪个模块出了BUG也由该模块的程序员负责修改、完善。

这样一来,接触到所有源代码的人就非常有限,其他人只接触到一部分,泄露出去也没什么影响。

#####

一。大多数场合 商业发布的软件 都采用 编译型编程语言,典型是,比如windows 上的 app 可以用 visual c++ 做,软件 从源程序 编译成 可执行程序,安装到 用户电脑上的 是 exe 文件,所以不会泄露源代码。

二。对于一些 行业传统采用 脚本 语言的应用场合,比如 网站 浏览器端 运行的 java script 语言,则在 编程测试完后,发布以前,故意用程序 修改源代码,使其功能不变,但是格式变得混乱,变量名变得难懂,使别人阅读和理解起来非常困难,防止被别人 修改以后 再利用。

三。对内部开发人员的防范。 将一个大型软件的功能 进行 细分,模块化,中间用约定好的 api 进行调用,这样 每个开发人员 只能 看到本模块内部的源程序,其它模块的功能,通过调用库函数实现,这样,即使有开发人员 copy 走部分代码,但是 没有整个项目的源代码,难以修改 再利用。

四。 有部分 场合,一些公司 内部开发电脑没有上网,也没有 usb 等输出接口,这样内部开发人员 没有途径 将 代码 copy 走。不过,这些公司,好多都是笑料,比如以前 android 系统流行以前,好多开发手机系统软件的公司这样搞,人家android 全部开源,这些公司 这些烂系统代码,白让人人看 都觉得浪费时间,谁有兴趣 copy 了,庸人自扰罢了。

#####

首先对设备要严格管理,选择安全可靠的服务器供应商,对员工使用的电脑加强管理,限制软件程序代码只能在指定设备使用;

其次加强员工安全保密教育,同时提高保密薪资,俗称封口费。

最后也是最重要的,把好员工入口关,一定要选取受过良好教育、品行良好、有专业团队工作经验的开发者。

这三项,缺一不可,绝对不是满足一项就可以。

#####

只要是软件开发相关公司最后都要考虑自己的知识产权保护,包括注册专利,文档归档加密,源代码归档加密等,这里简单从几个角度来说说怎样保障源代码不外泄。

首先从项目管理角度来说,采取模块化开发,阶段测试,集中归档的方式,定制源代码管理制度,程序员编写后每天定时提交到版本库,项目经理每天要汇总审阅,保证代码的实施完整,控制每个人的权限,保证每个员工都能在最小权限下完成任务。

其次在知识产权保护上,如果是自己的产品一定要申请软件著作权进行保护,代码和界面都要注册,这样可以在出现外泄后通过法律手段进行维权。

最后在技术手段上下功夫,svn是最基本的,还有比如内外网隔离,封闭usb等,再有就是加密通过对源代码进行加密,不影响软件开发编译的使用,还能对源代码进行保护,具体加密方式比如SDC模式,文件只能在内部传递,如果脱离环境就需要审核,而且不影响其他的操作,文件无法通过外网发出去,还不影响调试编译等。

#####

软件外包已经非常成熟了,而且防源码外泄的的手段很多也很成熟:

首先,但凡公司级别需要外包的软件,都不是一两个人能完成的,是一个大的团队,外包会拆分成不同的模块,一个人负责的只是其中很小一个功能,比如windows开发,可能复制和粘贴都是两个人甚至是两个团队开发的,因此,你个人拿到的那点代码,一点用没有。

其次,软件开发很多使用代码管理器,类似github,你写一点提交一点,不在本地保存全局数据,当然也有用虚拟桌面等方式哈。

还有,软件外包肯定会签订严格的保密合同。

软件实际上是一个很大的工程,最主要的是在设计和架构上,这些做好了,拆开外包,写代码的甚至都不知道自己是给什么软件做的功能,怎么泄密啊。

#####

1.公司为不同类型员工配备不同电脑。源代码存储到服务器,开发人员用源代码版本管理器,运维人员配备笔记本,现场运维部署用release版本。

2.关键代码加密。

3.薪资待遇方面,从薪资方面拉拢员工。

4.签订代码保密协议。

#####

来说说我遇见的几种源代码不会被外泄的方法吧!

第一种就是安装加密工具,电脑文件往外传输时会加密,包括USB口,串口,网络。

第二种就是给员工配置两台电脑,一台只能上外网,一台开发机只能上内网,开发机不能使用USB口。

第三种就是使用远程虚拟桌面,开发都在虚拟桌面里进行,文件只能从本地传到虚拟桌面,不能从虚拟桌面传到本地,同时虚拟桌面不能连外网,只能内网,本地只能上外网和连到虚拟桌面。

其实大部分公司没啥核心技术,代码管理没有那么严格,运行数据才是最重要的,只有服务器管理人员有权限登录。

标签:

提交需求或反馈

Demand feedback