如何构造一个远程开发环境让开发者无法拷贝代码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
kukuwhu
V2EX    程序员

如何构造一个远程开发环境让开发者无法拷贝代码?

  •  
  •   kukuwhu 2016-04-27 20:33:03 +08:00 9865 次点击
    这是一个创建于 3506 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有个特殊项目需要做代码保护,开发环境是 linux ,如何让开发者远程到服务器上做开发,但不能通过其他技术手段 copy 代码到本地?中间可以加代理服务器,比如 windows 的 VDI,有没有简单的方法?主要是防君子,小人没法防,有经验的老司机请给些方案或建议,谢谢!
    67 条回复    2016-04-29 14:21:06 +08:00
    binux
        1
    binux  
       2016-04-27 20:41:10 +08:00
    请定义什么是拷贝?
    ccc008
        2
    ccc008  
       2016-04-27 20:44:23 +08:00
    没有说什么开发语言, c 、 c++的话,把核心功能做成库,如果是 java 、 php 什么的把核心做成 webservice 。但是说起来防开发者真没有必要,就像去看医生却害怕被看到隐私部位一样,医生怎么能施展的开呢。
    clino
        3
    clino  
       2016-04-27 20:45:58 +08:00
    只让用户用远程桌面 然后把远程桌面能传文件的方法都关了之类的?
    murmur
        4
    murmur  
       2016-04-27 20:56:23 +08:00
    想多了,想泄密的抄下来或者截图都能给你泄密,如果技术有用就没有间谍被枪毙了
    Z1076
        5
    Z1076  
       2016-04-27 20:57:05 +08:00
    这个难搞吧,你都说明是开发者了,写过一次的 code 再写出来一点都不麻烦吧...可以自己搭个 git 服务器,然后让他提交开发分支,自己接收合并不允许 clone 。或者像 2 楼说的,核心功能编译打包使用。
    UnisandK
        6
    UnisandK  
       2016-04-27 20:57:13 +08:00
    VPS 管理那种 Web VNC 行,但是这种事不是一般是靠保密协议去防的么
    kukuwhu
        7
    kukuwhu  
    OP
       2016-04-27 21:09:25 +08:00
    @binux 就是让人很舒服的就能把整套代码全拷走,而不是截图出来,然后靠手敲一个个还原成字符。
    kukuwhu
        8
    kukuwhu  
    OP
       2016-04-27 21:10:13 +08:00
    @ccc008 llinux 平台 C 语言,多人协作,真要防确实难防,只能说最大化减少代码外泄。
    wjfz
        9
    wjfz  
       2016-04-27 21:21:16 +08:00
    用人不疑,疑人不用。
    unique
        10
    unique  
       2016-04-27 21:24:11 +08:00
    @wjfz +1
    kukuwhu
        11
    kukuwhu  
    OP
       2016-04-27 21:31:00 +08:00
    @UnisandK 谢谢,找到了 noVNC ,貌似可行
    pkking
        12
    pkking  
       2016-04-27 21:31:29 +08:00
    selinux
    Tink
        13
    Tink  
    PRO
       2016-04-27 21:37:44 +08:00 via iPhone
    没办法,能限制拍照嘛
    likuku
        14
    likuku  
       2016-04-27 21:38:33 +08:00
    把代码背诵下来,你又能怎样?封闭开发?开发完成,杀掉所有开发者?
    likuku
        15
    likuku  
       2016-04-27 21:39:43 +08:00
    代码 /软件申请著作权保护,签保密协议,若违约要赔付高额违约金。
    likuku
        16
    likuku  
       2016-04-27 21:41:40 +08:00
    况且,不少产品 /软件,竞争力核心可能甚至只有几行代码 /一个公式 /一个参数。防不胜防。
    Tink
        17
    Tink  
    PRO
       2016-04-27 21:42:16 +08:00 via iPhone
    没办法,能限制拍照嘛 o
    xuboying
        18
    xuboying  
       2016-04-27 21:42:43 +08:00 via Android
    听说有公司封 USB 外网摄像头
    ayaseangle
        19
    ayaseangle  
       2016-04-27 21:48:57 +08:00
    drm 也无法组织录屏软件。。。。开发人员想拷贝的话手抄你如何防呢?
    weiweiwitch
        20
    weiweiwitch  
       2016-04-27 21:57:57 +08:00
    @xuboying 这类公司很多。
    如果作为开发者必须要用外网,就不要去这样的公司。如果作为老板或主管,希望保护自己的知识产权,就放开手做各种物理隔绝,不用在乎别人的意见。
    这类事讨论对错没有意义。
    owt5008137
        21
    owt5008137  
       2016-04-27 22:19:47 +08:00 via Android
    无解啊,只要你看得到代码,再不济截屏复制图片到 onenote 然后点一下识别图中文本。就全出来了哇。
    或者其他的图片识别的工具也行哇。
    关键在于代码太容易识别了哇
    xuboying
        22
    xuboying  
       2016-04-27 22:33:33 +08:00 via Android
    硬的封网封 USB 封手机(某 500 强),软的 NDA 协议
    hpeng
        23
    hpeng  
       2016-04-27 22:41:32 +08:00 via iPhone
    断网,小黑屋。项目结束,放人。
    cxbig
        24
    cxbig  
       2016-04-27 23:31:59 +08:00
    看到“主要是防君子,小人没法防”我就笑了,真是君子提一句就够了,还折腾这些干什么。。。
    oglop
        25
    oglop  
       2016-04-27 23:35:40 +08:00 via Android
    我公司是类似这样的,用的是 nomachine
    Tetsuchou
        26
    Tetsuchou  
       2016-04-28 00:49:11 +08:00
    阉割一下 git
    nivan
        27
    nivan  
       2016-04-28 01:01:02 +08:00
    远程拖拽式编程。
    Phariel
        28
    Phariel  
       2016-04-28 01:04:29 +08:00 via iPhone
    本厂靠强保密协议 一大波儿法务正在袭来。。。
    typcn
        29
    typcn  
       2016-04-28 01:06:25 +08:00
    @kukuwhu 代码都是英文,相当好识别,下载 tesseract ,用默认自带的训练数据,一键就能识别, 5 分钟写个脚本自动翻页自动截图自动 OCR ,很容易就翻下来了。

    你要是防君子的话,“这个代码比较重要,不要保存在你本地”。

    用 VNC 关剪贴板是一种非常恶心人的方式,没法复制文件,没法粘贴字符串,传点测试数据都得先传网盘,传 code snippets 还得用 gist ,你要是没法访问外网还得开按键精灵粘贴数据,写个代码跟打 CTF 比赛一样,估计写一会就得恶心的砸电脑了。

    总之,这些 gp 方法只会让写代码的难度提升几十倍,复制代码的难度只增加了一丁点。
    dapang1221
        30
    dapang1221  
       2016-04-28 01:26:37 +08:00 via Android
    说实话,第一,我不觉一群被公司当做贼一样盯着的开发人员会为这个公司写出什么高效率高价值的代码。第二,我不觉得开发人员在这种情况下会发挥 100%甚至 120%的水平。当然,大公司耗得起。
    realpg
        31
    realpg  
    PRO
       2016-04-28 02:29:36 +08:00   1
    本来挺好的事儿
    楼主要是这么干我觉得肯定有非得跟你较劲的直接把你代码发 github 上去……
    qw7692336
        32
    qw7692336  
       2016-04-28 03:28:07 +08:00
    把代码转成一个个的二维码流,手机拿摄像头慢慢还原代码。好像彩色那种二维码,每张图能存更多数据。
    qw7692336
        33
    qw7692336  
       2016-04-28 03:37:57 +08:00   1
    就算你远程桌面+虚拟机,我也可以用类似二维码流+摄像头的方式获取文件。而这个“二维码生成器”可以自己在虚拟机里面实现。我相信只要这个虚拟机里面能写代码,就能写出这种生成器,哪怕是只有命令终端,没有图形界面。通过终端打印二维码也是可行的,我可以每隔一段时间换一张,只要设好规则,就能把这些松散的二维码连起来。
    loading
        34
    loading  
       2016-04-28 08:01:33 +08:00 via Android
    将代码细分到无数人完成
    WildCat
        35
    WildCat  
       2016-04-28 08:21:17 +08:00 via iPhone
    截图 OCR
    venster
        36
    venster  
       2016-04-28 08:27:30 +08:00
    @kukuwhu 截图之后谁会傻到逐字敲出来? ocr 一下,快的不要不要的。运气好的话,一个字都不用改
    Midnight
        37
    Midnight  
       2016-04-28 08:42:07 +08:00
    @UnisandK 保密协议没卵用
    Midnight
        38
    Midnight  
       2016-04-28 08:44:19 +08:00
    我曾经也考虑过合格问题,后来不了了之了
    Neveroldmilk
        39
    Neveroldmilk  
       2016-04-28 08:49:08 +08:00
    杀人灭口。
    darasion
        40
    darasion  
       2016-04-28 08:52:10 +08:00
    电影里看到的办法:
    拆,拆到开发者都不知道自己在做啥、拿到别处完全用不上的程度,分别找相互不认识的人开发。最后自己合并成整体。
    sphawkcn
        41
    sphawkcn  
       2016-04-28 08:59:45 +08:00   1
    其实我很理解楼主的需求,确实有些关键性代码需要做这种防护,不要说什么拍照啊,二维码之类的,有心偷代码的是防不住的,银行都有人动过,还有什么是不可能的,但是你能说银行就没必要防护了吗?防护也还是必要的,至少不能让人轻轻松松随便敲几下 git clone ,或者 cp 就能把完整代码加注释加文档连窝端。
    des
        42
    des  
       2016-04-28 09:27:23 +08:00 via Android
    我就想问背景调查,保密协议这些事干嘛的
    Felldeadbird
        43
    Felldeadbird  
       2016-04-28 09:46:18 +08:00
    远程的任何防止手段其实都不靠谱。真的要提防应该 是 包酒店,让相关的开发人员 封闭式开发。
    如果担心对方出来后人肉拷贝。可以在项目开发完毕后,延长封闭时间。开发无相关的功能(正常人记忆力是由限的,而且在高压赶进度下开发,很快会把之前做得大部分都忘记掉)。
    当然,其实都不靠谱。还是做背景调查,再考虑是否招这些人进行开发。
    techme
        44
    techme  
       2016-04-28 09:48:28 +08:00
    每人发一支笔一个小本子,每天写好代码后上交,再雇一个不懂开发的录入到系统里
    出错了再打印出来调试
    Moker
        45
    Moker  
       2016-04-28 09:49:37 +08:00
    突然想起了一部电影 记忆裂痕 只要想搞总有办法
    des
        46
    des  
       2016-04-28 09:50:47 +08:00 via Android
    既然你们担心代码被拷走,那么为什么不只让“可信任”的人才能看到??
    这样只能恶心到人而已。
    据我所知除了那些大型企业,也就外包公司喜欢这样做,大家都散了吧
    wizardoz
        47
    wizardoz  
       2016-04-28 09:53:49 +08:00
    防君子不防小人,君子会不会觉得很委屈
    exer
        48
    exer  
       2016-04-28 09:58:32 +08:00
    君子用的这么大的动静去防么??
    可以把功能细化。分工出去
    yzimhao
        49
    yzimhao  
       2016-04-28 11:12:37 +08:00
    这年头值钱不是代码,是模式,思想。
    wgwang
        50
    wgwang  
       2016-04-28 11:24:21 +08:00
    给足够的钱比如 1 亿美刀,包养他一辈子,不管是君子还是小人应该都不会泄露了

    其他方法,没戏。真要抄,每天下班前背一段,回到家写出来,任何方法都无法隔绝。
    mengjue
        51
    mengjue  
       2016-04-28 11:43:27 +08:00
    开 WIN 虚拟机+禁止黏贴板,所有开发只能通过虚拟机进行,然后签订严厉的保密协议。上网只开 80 端口,禁掉所有网盘外部邮箱。这里的很多人好像都是学生,没有开发过大型项目,想当然的认为可以靠记忆把代码带走。采取这些措施不一定能够彻底杜绝代码偷窃,但是可以防止大部分人直接带走所有代码出去自己开公司。
    paw
        52
    paw  
       2016-04-28 13:01:29 +08:00
    @xuboying 华为吗。,。 ?
    inahesun8712
        53
    inahesun8712  
       2016-04-28 13:05:25 +08:00
    向华为学习吗?
    tinyproxy
        54
    tinyproxy  
       2016-04-28 13:18:17 +08:00 via iPhone
    上 SVN 吧,代码给不同的人写,功能 checkin 了直接踢了,除了管理人员谁也不能编译整个程序
    bk201
        55
    bk201  
       2016-04-28 14:50:49 +08:00
    将关键程序包编译,签订好保密协议以及背景调查,其它代码 copy 吧。
    murmur
        56
    murmur  
       2016-04-28 14:58:04 +08:00
    @mengjue 看你个思路就够了,关键算法一扫就可以,谁对业务代码感兴趣
    SlipStupig
        57
    SlipStupig  
       2016-04-28 16:44:50 +08:00   1
    没特别好的办法,说一些个人经历

    1.软件配置部分
    1.1 基本上就是在机器上装磁盘透明过滤驱动(只要文件一创建就被加密了,你拖出去根本没用),
    1.2 软件安装白名单,只有白名单的软件能运行

    2.硬件配置
    2.1.封掉 USB/音频接口(以前有通过音频接口偷数据出去的)
    2.2 然后开发网络是局域网,查资料是单独的机器每个人分配不同的 Token,每个 token 的权限是不一样的,你在该机器所有操作都会被记录(稍微大一点的公司都这么干)
    2.3 出口网络流量特征审计,干掉一切未知流量和黑名单 IP
    2.4 开发环境 24 小时监控

    3.人员部分
    3.1 人员背景调查有不良背景的直接 pass
    3.2 关于人员方面尽可能让模块分散,每个人只负责一个模块,每个组的人不见面不接触最好是根本不知道有别人一起在做,在各地分散封闭开发。每个周五由管理人员代码 push 总服务器上,周一分发测试结果,项目完成后延期进行开发,人员进行分批解散
    3.3 开发期间严禁带任何电子产品,每次上工地都进行安检(据说华为的核心机房是法拉第笼,没去过)
    3.4 严格保密协议,开发解散后会发一定的保密费(视情况而定),出现泄密直接坐牢

    某部队开发就是这么做的,仍然出现过泄密事件,说明制定只能减少不能杜绝
    huobazi
        58
    huobazi  
       2016-04-28 17:31:42 +08:00
    多给钱
    裸替封闭开发
    项目结束后都杀了,或者打成脑残
    huobazi
        59
    huobazi  
       2016-04-28 17:33:01 +08:00
    更正一下,刚才第二条是 ”裸体”
    402124773
        60
    402124773  
       2016-04-28 17:59:24 +08:00
    @huobazi
    这个方法叼。和修建秦始皇皇陵差不多。
    int64ago
        61
    int64ago  
       2016-04-28 19:31:13 +08:00
    没有开发者喜欢这种环境干活的

    话说现在项目基本都是业务代码,毫无用处,或者说基本都是那么回事

    如果你的项目真的很多掉渣天的算法,代码就更不重要了,因为代码只是实现了数学逻辑和公式
    wdlth
        62
    wdlth  
       2016-04-28 20:01:33 +08:00
    @huobazi
    《记忆裂痕》的剧情差不多就是这样
    akira
        63
    akira  
       2016-04-28 20:04:59 +08:00
    封闭式开发,每个位置后面放个监控。签署保密协议。

    这样的公司谁爱去谁去,反正我不去。。
    paranoiagu
        64
    paranoiagu  
       2016-04-29 08:18:44 +08:00 via Android
    esxi , 客户端 用 VMware 上来,不能复制的。
    yuriko
        65
    yuriko  
       2016-04-29 10:32:53 +08:00
    @xuboying 某 500 强是在说菊花么
    blackfire
        66
    blackfire  
       2016-04-29 11:07:41 +08:00
    防君子就直接给一笔钱做保密费用,明确告诉他我们很重视保密这一点,也希望他能提出一些可行的保密措施-------我就是这样少了一段工作经历的,人生突然就被挖去了一块
    zjddp
        67
    zjddp  
       2016-04-29 14:21:06 +08:00
    我公司现在有专用保密室做开发用,隔绝外网,屏蔽信号,专用 CD 做数据转移,禁用 U 盘,进保密室之前交出所有有存储、通信功能的设备。全公司网络有上网行为管理。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3004 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 13:41 PVG 21:41 LAX 05:41 JFK 08:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86