
像 BAT 这类公司,假如我是刚刚入职的程序员,现在公司要我做一个专题模块,做好了要集成测试,这个专题模块要用户登录才能用,那么必须 include 这个 Passport 模块,而这个模块的源代码里面肯定有一些加密算法,私钥等等信息,不能让我们这些小程序员看到里面的代码,那么具体怎么做测试呢?他们如何保证核心业务代码的安全?
1 knightdf Jun 28, 2016 那核心代码不是只能老板亲自写了? |
2 Infernalzero Jun 28, 2016 服务化接口,远程调用 |
3 hitmanx Jun 28, 2016 瞎说啊。一般的比如可以做成库的形式吧,二进制+API 头文件;一些敏感的怕泄漏出去有人反汇编的可以直接以网络形式提供接口 |
4 plantain Jun 28, 2016 via Android 私钥一般不写死的,可以配在环境变量里 |
5 justfly Jun 28, 2016 为啥登陆要在代码里引入一个模块? 一个服务调用,你只要关注协议,不需要关注实现细节。 |
6 changwei OP @hitmanx 那像 py , php 这类脚本语言呢? @justfly 服务调用有的是 RPC ,但很多情况下就是单纯的 include 啊,因为这种大公司框架应该是自己写的,像 Passport 这种关键而且用的最多的模块应该都是写在框架底层里面了吧 @Infernalzero 远程调用,就是类似于 webservice ? |
7 okudayukiko0 Jun 28, 2016 via Android PHP 可以加密啊。 |
8 learnshare Jun 28, 2016 都是 SDK/API 化的,不会给你什么代码、数据库之类的东西 |
9 binux Jun 28, 2016 加密算法看到就看到咯,秘钥开发一套,在部署的时候再加载一套就好了。 而且,如果是用户模块,除了代码,你没有数据库你怎么测试? |
10 chaegumi Jun 28, 2016 围观学习 |
11 changwei OP @learnshare 像 php , py , perl 之类的脚本语言,除非像 php 可以编译成 opcode ,不然还是能看到代码啊,数据库肯定有测试机上面的数据库,字段,表结构什么的都还是能看到的把。 |
12 shiny PRO development test stage production 环境都不一样吧 |
13 dexterlei Jun 28, 2016 这个回答可能有点跑题。 私以为,大型公司的核心财富并不仅仅在于他们的核心代码。组织最重要的组织结构等等,是能让系统运行起来的人,有了一套代码,要发展出与之匹配的生意模式和人员配给同样是大学问,也更加难以在短期内复制出来。而出来做生意,最终是成本和收益,对核心代码之类的保护也只能达到相对的强,没有完全攻破不了的防御,只要你能出得起那个成本。其实只要保证潜在的对手获得这个东西的成本会高于收益,你的东西自然就是安全的。 另外,能问出这个问题,总让人会怀疑有没有居心不良的想象 |
14 choury Jun 28, 2016 via Android 开发的接触不到线上环境,只能操作测试数据库,运维没有数据库权限, dba 不能接触代码 |
15 Zzzzzzzzz Jun 28, 2016 @changwei python 第一次 import 或者调用 compileall 后生成的 pyc 、 pyo 就是字节码, 可以直接交付, 而且 python 可以用 cython 编译成 binary, 这个更好一点, 基本上所有语言的 opcode 只要不做混淆对保护代码都没有什么卵用. |
16 marffin Jun 28, 2016 代码无所谓吧,随便看,不值钱 数据才值钱 |
17 yangxiongwei Jun 28, 2016 走 rpc 的 |
18 lynnworld Jun 28, 2016 环境变量不同 |
19 seki Jun 28, 2016 泄漏代码可以入刑的,大公司的健全的法务团队不会错过这样的完成 kpi 的机会的 |
20 intsilence Jun 28, 2016 楼上已经说了,都是 rpc 调用的。 |
21 surfire91 Jun 28, 2016 “那么必须 include 这个 Passport 模块” 不是必须 include, 是必须不能 include 啊 |
22 thomasjiao Jun 28, 2016 用的是 php 扩展 |
23 luojing Jun 28, 2016 via Android 大型网站的登录都是接口授权登录,因为各种系统的语言可能都一样。有专门负责会员系统的部门。至于说代码泄漏问题,尤其像一些游戏公司,他们会分内外网,要一定级别的人才能考出代码到外网 |
24 paradoxs Jun 28, 2016 库. 而且事实上值钱的不是代码啊, 给你一个"美团", 你也 run 不起来啊. 是不是. |
25 wwthappy Jun 28, 2016 代码没有你想的那么重要,看了又怎么样?重要的是公司的商业模式组织结构。 |
26 rekulas Jun 28, 2016 https://github.com/del-xiong/screw-plus 本地服务器进行测试,核心代码加密 |
27 wujunze Jun 28, 2016 一般公司都会跟员工签订保密协议 如果泄露公司的重要代码 是要承担法律责任的! 而且都有契约精神,公司雇佣你,公司也相信你,建立在互信的基础上,没有必要对程序员进行防备吧! |
28 cmlz Jun 28, 2016 via Android 难道你们入职的时候不用签保密协议? 签了后你还敢乱 COPY 代码到处甩不怕进去捡肥皂? |
29 billlee Jun 28, 2016 大公司不防止程序员接触核心代码 |
30 boyhailong Jun 28, 2016 你想多了 小公司才会这么鸡贼 |
31 msg7086 Jun 28, 2016 1. 大公司不太会 care 你接触这些代码。 2. 大公司不太会让你有办法直接读写敏感信息的。 如果能,那说明这个公司也没什么太需要偷的东西了,技术不过关。 |
32 bobuick Jun 28, 2016 腾讯把代码都共享给你, 你能复制个腾讯出来不? 并没任何卵用。 另外, 法务在凝视着你 |
33 fluyy Jun 28, 2016 给你一套代码,你就能搞一个微信, QQ 淘宝出来? 再说,代码,算法也是有专利的。 |
34 mengzhuo Jun 28, 2016 via iPhone 鹅厂员工表示跨部门要代码都是不可能的, 更别说有内审的情况下拷贝整个 bg 的前后端代码。 |
35 vileer Jun 29, 2016 via iPhone 我们实习生都有权看代码 |
36 9hills Jun 29, 2016 via iPhone 代码不用保密,保密的是策略和数据。 比如搜索反作弊策略就是核心保密的,但是搜索程序本身不保密 |
37 techmoe Jun 29, 2016 via Android 把代码偷偷 pull 下来打包带走,回去仔细研究实现。。(滑稽) |
38 appbox Jun 29, 2016 只能被模仿,无法被超越 |
39 paulagent Jun 29, 2016 google 是全员都能访问 code repo , 并不担心什么。 有一种东西叫 NDA , 我们学校和企业做个项目,学生还的签, 违反了就等着坐牢加赔钱吧。 第二,楼上很多人都说了,给你代码没有卵用,代码加上商业逻辑才是王道。 第三,当年同事做过日本的项目,去日本出差,每天进门都要把手机上交,进入一个全封闭的屋子,出门上厕所也要申请,所有电脑不能连接外网, usb 等物理接口全锁死,外加监控。 没有任何隐私。 听说华为也有这么干的部门。这种模式下,你只能靠脑袋记住了,晚上回家写出来。 |
40 paulagent Jun 29, 2016 |
41 so1id0t Jun 29, 2016 via iPhone 基本都是防君子不防小人的小手段 |
42 hrong Jun 29, 2016 via Android test driver |
43 yjxjn Jun 29, 2016 IBM 是这么干的,你要是在互联网上泄露代码了,一经发现,等着走人吧,甚至有可能法务会起诉你,代码可以看,唯独对于数据库权限,一般只有 select 权限,也就几个表,不是很重要,对于非常 confidential 的表来说,如果业务需要的话,才临时给你付权限,一旦项目结束,直接 revoke 掉...... |
44 smithtel Jun 29, 2016 rpc 远程调用 |
46 Wenwei Jun 29, 2016 想多了,即使给你整套的代码,那么多年的代码和配置,想必你也 run 不起来。况且不同的系统可能采用不同的语言来写。 |
47 bitsjx Jun 29, 2016 代码都在内网服务器上,和外网直接是隔离的,即使看了也没啥啊,反正也拿不出来,但是如果不让看,那怎么工作? |
49 tsungkang Jun 29, 2016 @Wenwei 哈哈,这话我赞同,我现在这公司大部分代码是可以直接拉下来瞧的,全部拉下来有 1G 多(这还只是源代码,生成了以后得有 6G 多……),不过嘛,其实知道了大概原理以后我表示对这些源代码也没啥兴趣了,留着还浪费硬盘空间。再说了,即便给我我也跑不起来,没那运行环境。 |
50 wodesuck Jun 29, 2016 私钥偷到也没用,肯定会有换钥机制的 |
51 stormpeach Jun 29, 2016 编译型语言底层用二进制文件。 web 开发你还藏着掖着?还让不让人加班了? |
52 Jehovah Jun 29, 2016 我已掌握了沙小吃的核心技了!你要加盟?! |
53 mechgouki Jun 29, 2016 现在的软件开发 就算给你全部代码也没有用 关键是人和团队啊 |
54 islandev Jun 29, 2016 代码 没啥用,重要的是 数据和人 |
55 shimanooo Jun 29, 2016 抓到就索赔 1000 万 |
56 cocalrush Jun 29, 2016 公钥私钥测试环境一套 生产环境一套... 给你并不会影响什么啊. 加密算法都是公开的 |
57 ethego Jun 29, 2016 我厂是这么解决的:同时存在几套环境,生产、线上、日常、测试等等等等,像私钥这种东西每个环境都是隔离的,开发环境只保证程序能正常运行。如果个人要拿真正的用户数据需要像 db 团队进行申请,由 dba 或者自己去线上系统导,数据会经过一次脱敏。 |
58 ethego Jun 29, 2016 内部各模块之间调用全部走 api 的,与开发无关的模块无权限浏览。 |
59 hqs123 Jun 29, 2016 围观学习^_^ |
60 hongcha Jun 29, 2016 朋友你想多了,基本都是走网络请求接口调用 api/rpc, 你要是 include 了,后面人家更新了算法密钥,你不得跟着更新,耦合太大了 |
61 vnady Jun 29, 2016 那么庞大的代码,你能把他跑起来,出问题了你能解决。到这水平谁还会去 copy 代码? 能把上万 k 代码跑起来的人也是很牛的。 |
62 annielong Jun 29, 2016 应该用的 api 之类的借口,不需要登录的话只需进行验证是否登录,需要登录的话调用登录借口 |
63 changwei OP @mengzhuo 请问一下,你们鹅厂员工是否有电脑或者 U 盘掉了的情况,如果这个时候有代码在这上面,被人捡到了拿去干坏事了咋办? @bobuick 话说我国历史上有因为盗窃源代码被判刑嘛?近几年新闻我好像没咋听到过 @vnady @tsungkang @Wenwei @fluyy @marffin @binux @ethego 我想说的只是从安全角度上考虑,比如说百度的搜索结果排序算法啊,一些关键业务比如说支付宝付款环节各种 csrf token 的生成算法啊,用户登录后种植的用于身份验证的 cookie 算法有可能会被泄露,而不是说你弄到源代码然后去搭建一个私服。。。你们都理解偏了我的意思,,, |
64 hwsdien Jun 29, 2016 开放接口,微服务的形式 |
65 mengzhuo Jun 29, 2016 @changwei 电脑都必须开机密码和硬盘加密(Mac 也是), U 盘理论上不能带(毕竟有云盘),内审发现不加密就罚钱(貌似还有部门通报批评) 所以我现在不带电脑回家(反正发了一台笔记本,一台台式) 而且就算有代码,密钥也不会在上面啊…… |
66 paulagent Jun 29, 2016 你还是年轻啊,你说这种泄漏就是犯罪,抓到是要坐牢的。 那人为什么要犯罪,一种是穷的活不下去了,这些大企业的员工显然不是,就算哪个倒霉蛋欠了赌债,他想变现,他拿到这些东西卖给谁,自己干? 怎么隐瞒突然多出来的资金,卖给黑产,能卖多少钱? 为了这点蝇头小利就准备下半辈子呆在监狱的人不多吧。 一句话,想犯罪的人,多半是有时间赚钱,没时间花钱。 你以为公司内控什么的都是摆设,泄漏出去的信息和自己家有漏洞被黑了是两码事,很快就能查出来是谁泄漏的。到就等警察叔叔去查水表了。 |
67 lawlietxxl Jun 29, 2016 疼逊:抄?你这不是关公面前耍大刀吗? |
68 maxsec Jun 29, 2016 私钥随机生成 私钥主机不开 80 、 443 后的任何端口 |
69 ourcubk Jun 29, 2016 @changwei 判刑的不少的...法务不是吃素的...http://bbs.c114.net/thread-899465-1-1.html |
70 qwerasdf Jun 29, 2016 业务代码都有对应的 dummy 假数据供你玩耍 |
71 walkie Jun 29, 2016 我遇到过部分人是给你核心都不会看的,尽量少知道,少干活,就写自己这一块,老滑头们 |
72 yx1989 Jun 29, 2016 加密算法可以是公开的,但是密钥要是保密的。 --香农 信息论 |
75 ajan Jun 29, 2016 看标题的描述应该是那种两个人的小公司才有的需求 |
76 gejigeji Jun 29, 2016 在公司里,通过职务之便获取利益还是很容易的,不过很多是犯法的 |
77 cYcoco Jun 29, 2016 大部分楼层跑题了 一般都是通过服务化来做的吧 |
78 hl Jun 29, 2016 大公司连内部系统都是服务化的,根本不需要源码级的接触,直接授权之后连服务就行了 |
79 h4x3rotab Jun 29, 2016 via iPhone goog 的机密代码也是无关人员不能访问的 |
80 YouXia Jun 29, 2016 via Android 阿里,我们这边同事业部的绝大部分代码都是可以看到的,自己申请下就行,除了与钱挂钩的,比如广告涉及到反作弊。 |
81 onceyoung Jun 29, 2016 via Android 我不在什么大公司,但是我们公司的代码前后端我都是可以看到的,可以下载的,你的意思是我就可以去开另一家公司了? |
82 roker Jun 29, 2016 狼厂是把核心代码烧在芯片里~~~~ |
83 tSQghkfhTtQt9mtd Jun 30, 2016 via Android 大型公司里面如何防止程序员接触到核心代码? http://www.zhihu.com/question/47941381?f3fb8ead20=14b264c5a48f3dfdfe0ef2ba3c3e346d (分享自知乎网) |
84 casaca Jun 30, 2016 via Android 看到那些淡什么商业模式,什么代码不重要,什么给你代码也复制不了一个腾讯,,,这些都是啥子?不知道不作声人会说你 SB ,没进过大公司不了解就不要在这说些没用的商业模式。还代码不重要。 |
85 prczsf Jun 30, 2016 给你 QQ 的全套源代码,你能再搞一套做到 QQ 这个级别吗?互联网公司更重要的是运营。 大公司之所以成功,不仅仅是因为那两行代码。 核心源代码重要不重要,肯定重要,所以各种保密规定之类的。 |
86 SmiteChow Jun 30, 2016 代码没啥用,给不给你看源代码你都不敢泄露的,除非你想去待几年。 |
87 feuvan Jun 30, 2016 算法公开没用,又不是火星座标系算法。 token 都靠密钥保证,不靠算法。再说私有算法未必比公开算法安全。 举个最简单的例子,线上服务器加盐算摘要的环境配置和开发服务器肯定不一样,你知道怎么算摘要也没用。 |
90 lucifer4he Jun 30, 2016 用户中心自己就是一个事业部好么。给你提供接口,接口外的统统做不了。有需求告诉用户中心的人让他们搞新接口。 如果你不是用户中心的选手,但是有空把他们代码梳理一遍-。-话说你哪个事业部的,没有自己家的代码码么=。= |
91 owt5008137 Jun 30, 2016 via Android token 一类的东西都是带随机生成的,然后一定时间或者一定次数或者其他的一些途径来失效的。 然后由几个 key 做 hash 到其他 key 的算法。用一个不容易被碰撞攻击得算法即可,就算告诉你又怎么样。除非你在路由上劫持流量。 比如 ssh 用认证 key 登入的时候,不就明摆着告诉你算法了么,然而你看看容不容易破解。 更何况这个 key 一般都是静态的,而那些 token 还是动态的,会自动失效的 |
92 geektony Jul 1, 2016 双方信任才有用,再多的技术手段又有何用。况且人才是最大的漏洞。 |
93 fluyy Sep 16, 2016 via iPhone @changwei 懂你意思了,对于数据安全,一般大厂都有强的权限校验,不是谁都能看核心数据的。第二个像账号安全, token 生成算法。其实很多算法都是比较通用的生成算法,关键是你要拿到密钥啊。有些算法里变量还不止一个,所以危险还是比较小的。我知道的团队在调整安全协议时,会找专门的安全同学审核。会考虑很多场景,当密钥泄漏,以及协议被破解时,都会有应对策略的。最后你签合同时是有保密协议的哦。法务团队也会盯着你的。 还有你说的 u 盘弄丢了,这个不太清楚会怎样。但是如果公司的电脑弄丢了,需要向 IT 部门报告,他们一方面会协助警方定位电脑,另一方面会远程格式化数据吧。 由于没有经历过,上面的场景也是猜测的 |