PHP 多人开发如何保证代码的安全性 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
duguxiaohuai
V2EX    PHP

PHP 多人开发如何保证代码的安全性

  •  
  •   duguxiaohuai 2017-07-29 16:46:18 +08:00 7936 次点击
    这是一个创建于 2998 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司核心项目,但是 PHP 不用编译,直接就能部署,既有好处,但是又不能保证每个开发人员都不离职,如何控制代码保证不被拷走,svn 貌似不行吧。

    64 条回复    2017-08-16 11:14:09 +08:00
    hellojinjie
        1
    hellojinjie  
       2017-07-29 16:49:56 +08:00 via Android
    分模块,模块之间通过接口调用,每人只能访问自己的模块的代码。

    即使代码泄露也只是部分而已
    run2
        2
    run2  
       2017-07-29 16:55:47 +08:00
    估计只能靠协议和职业道德搞定
    duguxiaohuai
        3
    duguxiaohuai  
    OP
       2017-07-29 16:58:33 +08:00
    @hellojinjie 那应该要细分很多模块 再就是数据库的话应该是全的吧 数据库抽出的话太难了
    duguxiaohuai
        4
    duguxiaohuai  
    OP
       2017-07-29 16:58:50 +08:00
    @sobigfish 这点实在不敢恭维啊
    Felldeadbird
        5
    Felldeadbird  
       2017-07-29 17:02:10 +08:00 via iPhone
    把人封闭开发。完成一个功能换另外一波人开发新功能
    lzhr
        6
    lzhr  
       2017-07-29 17:17:16 +08:00
    核心用 C,其他随意

    人心的问题,技术不好解决啊
    run2
        7
    run2  
       2017-07-29 17:17:52 +08:00
    就算你防得到不 copy 难道还能防止别人重新打一遍?
    你当开发人员是流水线上的工人?
    iAcn
        8
    iAcn  
       2017-07-29 17:55:41 +08:00 via Android
    没见过有这样的需求...最安全的,上司什么都亲力亲为,也不切实际
    leekafai
        9
    leekafai  
       2017-07-29 18:46:17 +08:00 via Android
    涉密的,走保密协议
    还有前面说的分模块搞,一边业务一边数据接口,双开发隔离,只能得到另一模块的运行结果而不能得到对面的代码。
    vivili
        10
    vivili  
       2017-07-29 18:49:15 +08:00
    很多人拷代码只是为了以后可能重复利用,也不会干什么坏事吧。只要一些密码,key 保证安全就没啥事吧
    joeke
        11
    joeke  
       2017-07-29 18:59:33 +08:00
    入职的时候不是签过保密协议吗,不要把人想那么坏,很多技术看代码只是互相学习吧
    zjsxwc
        12
    zjsxwc  
       2017-07-29 19:09:50 +08:00   1
    杞人忧天,
    首先,你签订了协议;
    第二,代码是有生命周期的,正常迭代的话,半年前的代码和当前代码往往已经大改了了;
    第三,就算同一套代码,也需要配合你当前已经趟过的运维坑、业务坑等经历的情况下才能发挥出意义;
    第四,除了业务逻辑相关的代码之外,大家都是直接拿开源代码用的;

    楼主有关注代码安全的精力,还不如多考虑考虑自身的业务决策是否明智。
    ajeef
        13
    ajeef  
       2017-07-29 19:13:35 +08:00 via Android
    就算你内部全部搞定,不自主~主机(非云主机,非 vps )还是会被第三方托管方泄露源代码的。
    Actrace
        14
    Actrace  
       2017-07-29 20:25:39 +08:00
    楼猪你想太多了,就是他(你)得到了全部代码也没用。

    我讲个反例:“就差程序员了”
    ericgui
        15
    ericgui  
       2017-07-29 20:59:51 +08:00
    怎么说呢,迈克尔波特早就说了,一个公司可以对另一个公司进行全方位的抄袭,但是,抄不走的是公司内部对业务的理解,也就是核心知识,这一点你抄不走的。

    所以完全没必要怕。
    linpf
        16
    linpf  
       2017-07-29 21:46:32 +08:00
    楼上那些说没必要害怕的,怎么心咋就那么大呢。
    或许压根就觉得自己根本没必要为公司考虑吧。
    我公司的代码泄露出去,我都担惊受怕。

    大公司估计各方面都能做到通过各方面压力和制度保证代码安全,但是一些中小型公司的项目,可能一共就没几个人,很难拆分的那么细,很有可能每个人都拿到了完整的项目代码。

    可是如果哪个员工跟东家闹别扭了……

    代码送到竞争对手公司手里,人家分析分析,找找 bug,没事给你试点坏,你就知道疼了。

    卖给一个玩快钱或者搞黑产的工作室里,分分钟给你 copy 一个李鬼站,盗你关键词骗你用户,最后坑钱跑路,名声臭的是你,你就知道疼了。

    甚至直接把你代码往 github 上一传,你这个公司几个月甚至几年的项目就跟被扒了内裤一样袒露在众人面前。

    估计有人要反驳我说这种事情发生可能性微乎其微,但是任何一个灾难发生的概率都比中一千万大奖的几率都要小,但他还是发生了。君子不立危墙之下,代码安全重于泰山。
    zjsxwc
        17
    zjsxwc  
       2017-07-29 22:46:39 +08:00 via Android
    @linpf

    第一,代码安全并不是指是否能被别人拿到源代码,而是只代码背后的数据是否被获取,这里安全要求的是代码质量,好的代码应该做到就是自己人也不会留下后门。

    第二,那么容易因为被 copy 源码而搞垮的公司也没 se 了,就算是 V2EX 被 copy 了出了个 v3ex 会有受众吗,上千家用同一套代码的电商(比如商派),上千家同一套代码的在线教育( edusoho ),也没见数据都被大家暴露了,更没见搞垮,反而不少因此上市了。
    hiboshi
        18
    hiboshi  
       2017-07-29 22:58:49 +08:00
    代码千千万 谁会看呢?没有特别大的利益关系,没有人会去看。
    linpf
        19
    linpf  
       2017-07-29 23:43:22 +08:00
    @zjsxwc 楼主担心的就是代码被人拷贝走的问题。我针对的也是代码被拷贝走的问题。中小公司的代码很难做到所有代码没有漏洞,但是因为代码本身不公开,可以作为一个黑盒,肯定要安全一点。哪怕有漏洞,别人也不会知道。但是代码公开出去就是另一回事了。试问有几个公司敢说所有代码没有漏洞的?哪怕是大公司的代码也不敢说没有漏洞吧。

    另外,像电商、论坛这种东西, 已经有各种各样成熟产品的网站,的确不怕 copy。但是涉及到一些很小众的产品,可能这个项目全国就十几家在做,而且这种产品也不是所有公司都能运营或者肯运营的,这种网站市场没有多少需求,所以也不会有人闲着没事去仿作,因为卖不出去,所以这些类型的网站是没有或者少有可用的稳定的线上开源产品存在的。

    而且作为一个闭源产品,被人公开代码,这就是一种侵权行为。不去考虑如何防止侵权就罢了,说风凉话没必要嘛。

    某人老婆被睡了,大家劝道:哎呀你老婆跟人睡了就睡了,无所谓的,你看人家当小姐的跟好多人睡呢,只要你儿子是你的就行啊。
    rESHARP
        20
    rESHARP  
       2017-07-29 23:48:05 +08:00 via iPhone
    上面所有说代码拷走也没关系的,能不能发一份各自公司的代码给我?要完整版的,什么语言都行,什么行业都行,最好发送之前跟你们老板说一声你在做什么。
    DeepCold
        21
    DeepCold  
       2017-07-30 00:05:04 +08:00
    与其担心代码泄露,不如好好做产品,即使别人抄袭了代码也比不过你们的体验。
    privil
        22
    privil  
       2017-07-30 00:10:59 +08:00
    没事,当你们用 php 到一定程度的时候你会发现后端你会需要用 java 或者其他语言重构的……
    mafic
        23
    mafic  
       2017-07-30 01:26:24 +08:00 via iPhone
    @linpf 我也同意你观点 是否有解决方案的思路呢
    msg7086
        24
    msg7086  
       2017-07-30 06:05:41 +08:00
    @linpf 侵权行为是法律问题,法律问题不走法律途径解决,而要走技术途径,我觉得难。
    linpf
        25
    linpf  
       2017-07-30 08:49:35 +08:00
    @mafic 这个问题我也一直在考虑。之前遇到过闪辞的程序员,入职第三天就不辞而别。交接都没有做,我只能打电话嘱咐一下把代码删掉。但是谁能保证这哥们现在电脑里到底还有有没有。


    @msg7086 法律途径只有事件发生以后才可以走。技术途径去预防的确很难,但是至少需要做一些事情去避免一下~防范于未然也是应该的。


    @privil 不要太迷信 Java。现在市场上六七成 jJava 言开发的网站,用 PHP 同样能胜任,甚至成本会更低。真正 php 已经无法抗住的网站并占不了多少比例。而且好多网站其实并没有那么多的访问量,比如金融、保险之类的,可能用户在你这里消费过以后,可能下次再来就得数月甚至一年以后了,但是并不会影响这些公司越做越大甚至上市。可能到公司项目结束,php 都能胜任。


    @DeepCold 你的代码我拿到了,你的用户体验我也拿到了。瞬间跟你同一条起跑线,怕不怕。
    alqaz
        26
    alqaz  
       2017-07-30 09:26:53 +08:00 via Android
    方案是开发终端组成内网局域网,无法上网。远程上去,所有代码编写都在内网进行,无法往外面拷贝代码,但是这样成本不小,看你怎么选了。
    lestat
        27
    lestat  
       2017-07-30 10:03:11 +08:00 via iPhone
    @zjsxwc 有道理
    dangyuluo
        28
    dangyuluo  
       2017-07-30 10:43:21 +08:00
    @alqaz 那么效率会超级低,而且,并不能防止代码泄漏。
    不让复制,我在屏幕前拍照不就行了。
    duguxiaohuai
        29
    duguxiaohuai  
    OP
       2017-07-30 10:49:58 +08:00
    @dangyuluo 拍照的话代码量不会小 而且拍照动作很容易监控 嘿嘿
    runningman
        30
    runningman  
       2017-07-30 11:05:14 +08:00
    代码基本没啥保密的。业务赚钱,不是代码赚钱。
    alqaz
        31
    alqaz  
       2017-07-30 11:05:28 +08:00
    @dangyuluo 你要这么说,那别人写代码是不是还要戴眼罩?
    dangyuluo
        32
    dangyuluo  
       2017-07-30 11:26:38 +08:00
    @alqaz 不是啊,我的意思是说模块要分离,每个人负责自己的内容,相互之间不牵扯。这样能将代码泄漏的影响降到最低。
    记得看过一个小说,主人公加工牛黄,每个人只负责一个步骤。商业竞争对手就算买通了工人也只能问到莫名其妙的操作,根本完成不了整体。

    而且我觉得就现在的互联网公司而言,代码或者说技术真的不是瓶颈,创意、PPT 制作能力、拉投资能力、控制股权能力等才更重要。
    msg7086
        33
    msg7086  
       2017-07-30 12:09:40 +08:00
    @linpf 「你的代码我拿到了,你的用户体验我也拿到了。」

    公司也不用开了,上法庭直接索赔几百万得了。

    PS: 我们公司的话,核心技术是申请了专利的,所以哪怕是竞争对手没看过我们的代码,只要用的同样的技术我们就能告死对方。
    linpf
        34
    linpf  
       2017-07-30 13:26:49 +08:00
    @msg7086 那些小作坊小团体 你还去上法庭?你连人家住哪你都不知道
    sagaxu
        35
    sagaxu  
       2017-07-30 13:28:27 +08:00
    @alqaz 这种工作环境已经自动把大部分平均水平以上的研发排除在外了
    msg7086
        36
    msg7086  
       2017-07-30 13:31:54 +08:00
    @linpf 小作坊我们不关心啊,爱抄就抄。做大了直接拿域名备案信息给律师去搞事咯。
    linpf
        37
    linpf  
       2017-07-30 14:21:48 +08:00
    @msg7086 心真大……
    raphaelsoul
        38
    raphaelsoul  
       2017-07-30 15:57:07 +08:00 via Android
    你的代码一文不值…

    码农总有一个错觉,代码很值钱。事实上恰恰相反,一个公司业务成功,代码只是第一步(虽然同时是很重要的一步),写代码产生不了经济效益。

    代码偷的走,品牌,资金,行业口碑偷的走吗? naive …举个简单的例子,你把你们的全套代码给我,我没有人脉资金是没法弄出一个一模一样的东西反过来竞争的
    msg7086
        39
    msg7086  
       2017-07-30 16:13:15 +08:00
    @linpf 反正我们的代码不值钱,值钱的是专利和客户。
    我们的代码只需要 20 万美金就能重写一套出来(而且我们的确正在整个重写因为之前的代码是不怎么懂写程序的人写出来的实在太烂了,核心架构是一位物理学博士写的,后续由亚美尼亚人和印度人接手,质量可想而知)。
    专利和客户要多少钱我不知道不过我们收到过 2500 万美金的投资 offer。
    akira
        40
    akira  
       2017-07-30 18:21:50 +08:00
    就技术角度而言,可以这样做。
    本地搭建一台开发机,每个开发人员必须远程连到这台开发机上面开发。同时公司网络全部没有外网接口,并且取消所有 usb 接口。最后,再在每个人后面在上空在放一个 24 小时 cctv。应该能满足你的要求了吧。。
    saintatgod
        41
    saintatgod  
       2017-07-30 18:54:31 +08:00
    @lzhr C 就靠不走了?谁忽悠你的
    lygmqkl
        42
    lygmqkl  
       2017-07-30 19:25:13 +08:00
    借鉴 SPA 思想,做接口,然后接口按照 token 给权限,一人对应一个权限,离职以后直接全部作废。
    lzhr
        43
    lzhr  
       2017-07-30 19:41:02 +08:00
    @saintatgod 我有说 C 不能拷贝吗?
    jianyunet
        44
    jianyunet  
       2017-07-30 20:05:47 +08:00
    IT 公司千千万,每年跳槽的码农万万千,还有众多外包公司以及外包公司的码农,可以说,想要做到技术层面的保密难上加难。如果哪家公司真的因为这个层面的问题被搞倒闭了(几乎没怎么听说吧? 9x 年那阵 IT 刚起步的时候不算),说真的,它也没资格在市场上生存下去
    chenjia404
        45
    chenjia404  
       2017-07-30 23:09:08 +08:00
    我碰到过一家电商公司,所有开发两台电脑,一台内网开发机,一台外网查询资料,供参考。

    但是我不建议这样,其实你的代码没有你想象那样值钱。
    linoder
        46
    linoder  
       2017-07-30 23:52:01 +08:00
    简单点 分仓库 rpc 复杂点核心代码二进制 php 调用
    nVic
        47
    nVic  
       2017-07-31 07:33:51 +08:00 via iPhone
    @zjsxwc 代码的生命周期往往比你想象的长。直接拿开源的,这个恐怕并不是普遍情况,因为开源代码都有使用协议。
    sampeng
        48
    sampeng  
       2017-07-31 11:04:51 +08:00
    代码本身并不值钱= =!基本的信任还是要有的。我以前也犯过同样的错误,弄伤别人感情了。不合适。
    现在找几个程序员像素级别 copy 一个站跟玩一样。代码能值几个钱。给你个淘宝,你能运营成现在淘宝这样的规模?
    lianxiaoyi
        49
    lianxiaoyi  
       2017-07-31 11:16:35 +08:00
    基本靠信任。。。算法基本靠 C ..帐号配置文件服务器和本地不一样。。。
    linpf
        50
    linpf  
       2017-07-31 11:45:10 +08:00
    @msg7086 你的代码不值钱不要紧,安全呢?被别人去审计代码里的漏洞,然后给你使绊子,你防得住?
    linpf
        51
    linpf  
       2017-07-31 11:49:29 +08:00
    @msg7086 中小公司同行之间相互下黑手的情况太多了,我们网站就被竞争对手搞了好几次。我们老板说,要是把他逼急了豁出去自己网站不开了也要整跨他们的网站。我都不敢想要是那家公司拿到我们的代码会做出什么事,甚至我们也特别想拿到他们公司的代码,就差派间谍过去了。你可能是没有过这种经历吧。
    msg7086
        52
    msg7086  
       2017-07-31 13:59:33 +08:00
    @linpf 你说得没错,我们是只给大型企业做内部系统的,所以的确没有这些经历。
    不过除非是编码水平不过关,否则代码里并不会留下太多的把柄。
    你想,如果对方为了搞你,看了下你的代码就发现了能攻击的漏洞,那你们公司的程序员测试员都在干啥呢,他们看自己的代码看了几个月几年了,为什么没把这些漏洞修复呢,对不对。
    Linux 内核也有漏洞,但是他们的漏洞藏得很深,触发条件非常边界,这是情有可原的。但是一个网站让人审计了代码就发现漏洞,这真的不应该。
    linpf
        53
    linpf  
       2017-07-31 14:05:51 +08:00
    @msg7086 小公司哪有专业的测试,程序员都身兼数职。
    linpf
        54
    linpf  
       2017-07-31 14:08:13 +08:00
    @msg7086 反正我都不敢说自己写的代码没有逻辑漏洞,但是老板也不会说给你 1 个月时间去找漏洞去。那么多开发任务还压着没做完呢。在这种情况下,只要保证我代码不公开,那么有这 bug 也一般不会有人知道。因为连我自己都不知道。
    vjnjc
        55
    vjnjc  
       2017-07-31 14:19:19 +08:00
    分系统吧,比如核心逻辑(比如用户登录)单独弄成一个系统,其他系统访问只能走 http,代码楼主一个人保管,保证安全
    msg7086
        56
    msg7086  
       2017-07-31 15:18:45 +08:00
    @linpf 我在团队里立下的规矩是自己写的代码应该要有自己的测试,因为我们公司已经吃过没有测试的苦头了(几万行代码没有测试,随便改一个小功能要测半个月还大概率血崩),所以除非是超小型的项目,否则再怎么样也要写好自动化测试。

    当然了这又是另一个话题了。
    linpf
        57
    linpf  
       2017-07-31 16:26:38 +08:00
    @msg7086 人力充足自然好啊,但是写自动化测试的成本恐怕要比代码本身还要高。
    msg7086
        58
    msg7086  
       2017-07-31 16:40:03 +08:00
    @linpf 从成本而言,我进公司之前我们技术部做了一个新版本开发计划,重做 UI,加入一个客户催了半天的功能,更换底层平台,预计 3 个月完工交付。
    我进公司的时候他们已经做了一年半了,进度到一半,特别去招了一个 QA 团队,每个星期用人手测出来的 Bug 比 Feature sub-task 还多。第二年做完以后发布了测试版,结果没几个月就把客户做到一半的数据盘删个精光。等开发部的人全走光以后,我把各种代码抽出来重写重做重设计以后,到第三年年中的时候总算 Bug 数量减少到我们的客服能够忍受客户抱怨的程度了。

    为了三个功能,在没自动化测试的情况下写了三年还只能勉强看,要是从头照着规矩认真写的话都够我写两遍了。
    我相信自动化测试的成本绝对不会比代码本身还要高,至少从带来的收益来看,是很划算的。
    linpf
        59
    linpf  
       2017-08-01 10:01:43 +08:00
    从你描述里来说,测试成本就已经比代码开发成本要高了。但是测试在中小公司里是选配的,尤其是做自己公司的项目,可能根本不会招测试~

    所以说,像这种没有经过专业测试的代码,哪敢让代码泄露出去。
    linpf
        60
    linpf  
       2017-08-01 10:04:33 +08:00
    @msg7086 而且不要高估了小公司程序员的水平。竞争公司一个程序员,还通过一个朋友介绍加了我,提问我一些技术问题……当然他不知道我是在他竞争对手公司~~二三线城市,市场就这么大,圈子就这么大。人都是对跟自己差不多的人才会有嫉妒心和报复心的。没几个人眼红 BAT 做那么大,但是一个人他身边的谁要是做大了做强了,那可是要眼红的。
    msg7086
        61
    msg7086  
       2017-08-01 10:12:41 +08:00
    @linpf 自动化测试就是用来消除手动测试成本的。
    测试成本越高,越说明自动化测试的重要性。

    (说来这贴跑题略远了……
    linpf
        62
    linpf  
       2017-08-01 12:35:25 +08:00
    @msg7086 不管是手动测试还是自动化测试,都是我这种公司舍不得花钱做的……所以只能保证代码不泄露~~
    kimmykuang
        63
    kimmykuang  
       2017-08-04 10:36:57 +08:00
    代码真没那么值钱
    owenk
        64
    owenk  
       2017-08-16 11:14:09 +08:00
    估计要安全还得做渗透测试
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1428 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 16:54 PVG 00:54 LAX 09:54 JFK 12:54
    Do have faith in what you're doing.
    ubao 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