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