相机|软件公司如何保护好代码?

相机|软件公司如何保护好代码?

文章图片

相机|软件公司如何保护好代码?

文章图片

相机|软件公司如何保护好代码?



我就职过的三家公司各有自己的代码保护策略 , 前两家公司主要是在法律上进行保护和进行代码安全的教育 , 没有使用技术手段 。 而第三家公司对代码的保护非常的严格 , 用了好多技术手段 。 这家公司做互联网应用 , 代码是其核心资产 , 再加上用.net进行开发 , 容易被反编译 。



于是公司的做法: 设置安全人员 , 这个安全人员就是老板 , 他的亲戚和一个亲信 。 全公司只有这三个人能接触代码所在的服务器和测试所在的服务器 。 在各个阶段严格控制代码的泄露可能 。 开发阶段:开发人员用双层远程桌面进入内网的开发服务器后 , 才可以编辑代码 , 编译代码 。 开发人员用的远程服务器 , 文件在审查后可以拷入 , 但不允许拷出 , 如果实在有需求要拷出文件 , 需要安全人员审查拷出文件的内容 。 在远程开发服务器上 , 不允许安装公司标准开发工具以外的任何工具 , 除非你能说服安全人员没有风险 。




测试阶段:第一轮测试要在专用的内网测试服务器上进行测试 。 开发把内网服务器编译的dll放到内网专用的一个ftp上面 , 由测试人员把dll拷到测试服务器上 。 第二轮公网测试 , 开发人员要进行严格的代码混淆 。 测试的时候 , 任何相应人员也是拿不到混淆后的dll的 , 要由自动化发布工具或安全人员将dll从内网拷到公网的服务器上 。 在该公网的服务器上 , 测试人员无法拷入和拷出任何文件 , 开发人员未经允许 , 不得访问该服务器 。 开发查看log要用专用工具拷出来 。



发布阶段:测试结束后 , 测试人员将相应dll放在专用的服务器上 , 由安全人员进行最后的发布 。 这种严格的代码保护导致的问题:开发效率很低 , 每个开发者只能用开发服务器上的“官方”开发工具 , 不能安装自己习惯的开发工具 。 内部开发服务器由于多个开发人员登录 , 经常出现卡顿 。 有时候出现故障 , 全部开发人员就要停工等待 , 要等三位安全人员修复好服务器才能开工 。 另外拷入文件 和发布文件很多时候需要三位安全人员来做 , 存在不少等待时间 。




由于开发服务器不能连上外网 , 不能使用Nuget , 导致依赖dll不能得到应有的更新 。 前端开发人员包的更新也很有问题 。 远程开发比较麻烦 , 不能在自己的电脑上修改代码 , 要先用VPN , 再进两次远程桌面才能修改 , 卡顿比较严重 。 由于公网测试就用混淆过的dll , 看日志里面的打印出的堆栈非常痛苦 。 严格的混淆政策导致一些第三方库不能使用 , 比如这些库使用了反射就会出错 。


【相机|软件公司如何保护好代码?】

带来的种种不便 , 每年开发人员和测试人员都会向上层提出意见 , 最后都会被安全人员否定 , 后来大家也就习惯了 , 大家所在的软件开发公司有没有更好的办法?