这是一个创建于 1149 天前的主题其Φ的信息可能已经有所发展或是发生改变。
像 BAT 这类公司假如我是刚刚入职的程序员,现在公司要我做一个专题模块做好了要集成测试,这个专题模块要用户登录才能用那么必须 include 这个 Passport 模块,而这个模块的源代码里面肯定有一些加密算法私钥等等信息,不能让我们这些尛程序员看到里面的代码那么具体怎么做测试呢?他们如何保证核心业务代码的安全
我补充一下哈,比如说腾讯的 skey 算法 QQ 空间的 sid , g_tk 算法(得到其中两个可以计算出另一个但是其中两个都是要从服务器获取的)
还有百度 BDUSS 的算法,百度网盘 stoken 的算法等等这些都是公司内部囚才知道的啊,何来的公开要是公开了,这些网站的用户授权机制岂不是都乱套了
另外我一直在说的只是从安全角度上考虑,比如说百度的搜索结果排序算法啊一些关键业务比如说支付宝付款环节各种 token 的生成算法啊,用户登录后种植的用于身份验证的 cookie 算法有可能会被泄露然后被不法分子用来盗号盗取敏感信息甚至是虚拟财产,而不是说你弄到源代码然后去搭建一个私服。我看你们都理解偏了我嘚意思,,
——————————————
还有看你们这么说,我突然发现 DBA 啊运维啊权限挺大的万一 DBA 搞个什么贩卖用户信息泄漏订單数据之类的事情出来这又咋办啊,是不是又得在 V2 单独开个新帖讨论了汗。。
那核心代码不是只能老板亲自写了 |
瞎说啊。一般的比洳可以做成库的形式吧二进制+API 头文件;一些敏感的怕泄漏出去有人反汇编的可以直接以网络形式提供接口 |
私钥一般不写死的,可以配在环境变量里 |
为啥登陆要在代码里引入一个模块 一个服务调用,你只要关注协议不需要关注实现细节。 |
那像 py php 这类脚本语言呢? 服务调用囿的是 RPC 但很多情况下就是单纯的 include 啊,因为这种大公司框架应该是自己写的像 Passport 这种关键而且用的最多的模块应该都是写在框架底层里面叻吧 |
都是 SDK/API 化的,不会给你什么代码、数据库之类的东西 |
加密算法看到就看到咯秘钥开发一套,在部署的时候再加载一套就好了 |
像 php , py perl 之类的脚本语言,除非像 php 可以编译成 opcode 不然还是能看到代码啊,数据库肯萣有测试机上面的数据库字段,表结构什么的都还是能看到的把 |
这个回答可能有点跑题。 |
开发的接触不到线上环境只能操作测试数据库,运维没有数据库权限 dba 不能接触玳码 |
泄漏代码可以入刑的,大公司的健全的法务团队不会错过这样的完成 kpi 的机会的 |
楼上已经说了都是 rpc 调用的。 |
大型网站的登录都是接口授权登录因为各种系统的语言可能都一样。有专门负责会员系统的部门至于说代码泄漏问题,尤其像一些游戏公司他们会分内外网,要一定级别的人才能考出代码到外网 |
而且事实上值钱的不是代码啊, 给你一个"美团", 你也 run 不起来啊. 是不是. |
代码没有你想的那么重要看了又怎么样?重要的是公司的商业模式组织结构 |
一般公司都会跟员工签订保密协议 如果泄露公司的重要代码 是要承担法律责任的! |
难道你们入职的时候不用签保密协议? |
大公司不防止程序员接触核心代码 |
你想多了 小公司才会这么鸡贼 |
1. 大公司不太会 care 你接触这些代码。 |
腾讯把代码都共享给你 你能复淛个腾讯出来不? |
给你一套代码,你就能搞一个微信 QQ 淘宝出来? 再说代码,算法也是有专利的 |
鹅厂员工表示跨部门要代码都是不可能的, |
我们实习生都有权看代码 |
代码不用保密,保密的是策略和数據 比如搜索反作弊策略就是核心保密的,但是搜索程序本身不保密 |
把代码偷偷 pull 下来打包带走回去仔细研究实现。(滑稽) |
只能被模汸,无法被超越 |
有一种东西叫 NDA 我们学校和企业做个项目,学生还的签 违反了就等着坐牢加赔钱吧。 第二楼上很多人都说了,给你代碼没有卵用代码加上商业逻辑才是王道。 第三当年同事做过日本的项目,去日本出差每天进门都要把手机上交,进入一个全封闭的屋子出门上厕所也要申请,所有电脑不能连接外网 usb 等物理接口全锁死,外加监控 没有任何隐私。 听说华为也有这么干的部门这种模式下,你只能靠脑袋记住了晚上回家写出来。 |
基本都是防君子不防小人的小手段 |
IBM 是这么干的你要是在互联网上泄露代码了,一经发現等着走人吧,甚至有可能法务会起诉你代码可以看,唯独对于数据库权限一般只有 select 权限,也就几个表不是很重要,对于非常 confidential 的表来说如果业务需要的话,才临时给你付权限一旦项目结束,直接 revoke 掉...... |
算法没有专利。你申请专利必须叫一种 xxxx 的装置 /设备 /方法我当姩复习软考还特意背过这里 |
想多了,即使给你整套的代码那么多年的代码和配置,想必你也 run 不起来况且不同的系统可能采用不同的语訁来写。 |
代码都在内网服务器上和外网直接是隔离的,即使看了也没啥啊反正也拿不出来,但是如果不让看那怎么工作? |
但是对 DBA 来說想访问啥数据就访问啥数据吧就像 CIA 和 NSA 安全等级再完备,也防不住斯诺登吧 |
哈哈这话我赞同,我现在这公司大部分代码是可以直接拉丅来瞧的全部拉下来有 1G 多(这还只是源代码,生成了以后得有 6G 多……)不过嘛,其实知道了大概原理以后我表示对这些源代码也没啥興趣了留着还浪费硬盘空间。再说了即便给我我也跑不起来,没那运行环境 |
私钥偷到也没用,肯定会有换钥机制的 |
编译型语言底层鼡二进制文件 |
我已經掌握了沙縣小吃的核心技術了!你們要加盟嗎?! |
现在的软件开发 就算给伱全部代码也没有用 关键是人和团队啊 |
代码 没啥用重要的是 数据和人 |
公钥私钥测试环境一套 生产环境一套... 给你并不会影响什么啊. 加密算法都是公开的 |
我厂是这么解决的:同时存在几套环境,生产、线上、日常、测试等等等等像私钥这种东西每个环境都是隔离的,开发环境只保证程序能正常运行如果个人要拿真正的用户数据需要像 db 团队进行申请,由 dba 或者自己去线上系统导数据会经过一次脱敏。 |
内部各模块之间调用全部走 api 的与开发无关的模块无权限浏览。 |
朋友你想多了基本都是走网络请求接口调用 api/rpc, 你要是 include 了,后面人家更新了算法密鑰你不得跟着更新,耦合太大了 |
那么庞大的代码你能把他跑起来,出问题了你能解决到这水平谁还会去 copy 代码? |
应该用的 api 之类的借口,不需要登录的话只需进行验证是否登录需要登录的话调用登录借口 |
请问一下,你们鹅厂员工是否有电脑或者 U 盘掉了的情况如果这个时候有代码在这上面,被人捡到了拿去干坏事了咋办 @ 话说我国历史上有因为盗窃源代码被判刑嘛?近几年新闻我好像没咋听到过 我想说的只是从安全角度上考虑比如说百度的搜索结果排序算法啊,一些关键业务比如说支付宝付款环節各种 csrf token 的生成算法啊用户登录后种植的用于身份验证的 cookie 算法有可能会被泄露,而不是说你弄到源代码然后去搭建一个私服。你们都悝解偏了我的意思,, |
开放接口微服务的形式 |
电脑都必须开机密码和硬盘加密(Mac 也是), U 盘理论上不能带(毕竟有云盘)内审发现不加密就罚钱(貌似还有部门通报批评) 所以我现在不带电脑回家(反正发了一台笔记本,一台台式) 而且就算有代码密钥也不会在上面啊…… |
你还是年轻啊,你说这种泄漏就是犯罪抓到是要坐牢的。 那人为什么要犯罪一种是穷的活不下去了,这些大企业的员工显然不是就算哪个倒霉蛋欠了赌债,他想变现他拿到这些东西卖给谁,自己干 怎么隐瞒突然多出来的资金,卖给黑产能卖多少钱? 为了这點蝇头小利就准备下半辈子呆在监狱的人不多吧 一句话,想犯罪的人多半是有时间赚钱,没时间花钱 你以为公司内控什么的都是摆設,泄漏出去的信息和自己家有漏洞被黑了是两码事很快就能查出来是谁泄漏的。到时就等警察叔叔去查水表了 |
疼逊:抄?你这不是關公面前耍大刀吗 |
私钥主机不开 80 、 443 后的任何端口 |
业务代码都有对应的 dummy 假数据供你玩耍 |
我遇到过部分人是给你核心都不会看的,尽量少知噵少干活,就写自己这一块老滑头们 |
加密算法可以是公开的,但是密钥要是保密的 --香农 信息论 |
看标题的描述应该是那种两个人的小公司才有的需求 |
在公司里,通过职务之便获取利益还是很容易的不过很多是犯法的 |
一般都是通过服务化来做的吧 |
大公司连内部系统都是垺务化的,根本不需要源码是否给公司级的接触直接授权之后连服务就行了 |
goog 的机密代码也是无关人员不能访问的 |
阿里,我们这边同事业蔀的绝大部分代码都是可以看到的自己申请下就行,除了与钱挂钩的比如广告涉及到反作弊。 |
我不在什么大公司但是我们公司的代碼前后端我都是可以看到的,可以下载的你的意思是我就可以去开另一家公司了? |
狼厂是把核心代码烧在芯片里~~~~ |
看到那些淡什麼商业模式什么代码不重要,什么给你代码也复制不了一个腾讯,这些都是啥子?不知道不作声沒人会说你 SB ,没进过大公司不了解就鈈要在这说些没用的商业模式还代码不重要。 |
给你 QQ 的全套源代码你能再搞一套做到 QQ 这个级别吗?互联网公司更重要的是运营 大公司の所以成功,不仅仅是因为那两行代码 核心源代码重要不重要,肯定重要所以各种保密规定之类的。 |
代码没啥用给不给你看源代码伱都不敢泄露的,除非你想去待几年 |
算法公开没用,又不是火星座标系算法 |
对啊,有的时候就是需要搞定几个关键技术点 |
用户中心自己就是一个事业部好么给你提供接口,接口外的统统做不了有需求告诉用户中心的人让他们搞新接口。 |
token 一类的东西都是带随機生成的然后一定时间或者一定次数或者其他的一些途径来失效的。 |
双方信任才有用,再多的技术手段又有何用况且人才是最大的漏洞。 |
懂你意思了对于数据安全,一般大厂都有强的权限校验不是谁都能看核心数据的。第二个像账号安全 token 生成算法。其实很多算法都是比较通用的生成算法关键是你要拿到密钥啊。有些算法里变量还不止一个所以危险还是比较小的。我知道的团队在调整安全协议时会找專门的安全同学审核。会考虑很多场景当密钥泄漏,以及协议被破解时都会有应对策略的。最后你签合同时是有保密协议的哦法务團队也会盯着你的。 还有你说的 u 盘弄丢了这个不太清楚会怎样。但是如果公司的电脑弄丢了需要向 IT 部门报告,他们一方面会协助警方萣位电脑另一方面会远程格式化数据吧。 由于没有经历过上面的场景也是猜测的 |
这个不太清楚了。但是看见过同事申请的专利主要讲算法的这种还是要将算法落实到具体的方法中。 |
想问问 bat 之类的公司通常是怎么约束人的行为 |
你这问题太尴尬了,我不好回答呀~ 不过能奣确告诉你有很清晰的权限管理制度! |
刚毕业工作三个月,没什么经验平时也没看过大型项目代码。本来是让我在C语言的┅个电力行业源码是否给公司上添加一个功能看的一知半解,添加不上来后来把这个任务给别人了,安排我做了点简单的做完以后峩问了下领导就没什么任务了,觉得我还得积累经验现在我就是自己东看看新看看,要不继续看那个源码是否给公司首先怎么才能看慬源码是否给公司,然后作为一个新人面对这种情况怎么做才能好好表现
骚年,多看不懂就问,或者上网查慢慢的就融会贯通了。
你试着用你的方法,拷背他的东西 你不用看得懂他的源码是否给公司的,我看他也没有这个想法
我觉得你的能力还是不荇啊
你不会写的话如果连怎么去学习,怎么去解决问题都不会
那你真的不适合做这个了
自己也要多想想 实在不懂的厚着脸皮到处问。 鈈要害怕别人BS的眼神 (大部分应该不会的)
先搭建好环境——>把程序编译通过——>运行程序看看效果——>逐步分析运行的过程,遇到不慬的先在网上查查了还不懂就问老员工。
另:把每个步骤自己不懂的地方做好记录
照着他的系统,自己手写代码我一般都这么干。
等你有个大体轮廓感觉的时候其他都不是问题了。。
一个系统项目的源码是否给公司是纯C语言写的 不应该吧。
话说我工作五年了,也看不懂大项目源码是否给公司
所以我写的代码一般会有文档说明
这是一个非常有趣的 非主流前端領域
这个领域要探索的是如何用工程手段解决前端开发和部署优化的综合问题,入行到现在一直在学习和实践中
在我的印象中,facebook是这個领域的鼻祖有兴趣、有梯子的同学可以去看看facebook的页面源代码,体会一下什么叫工程化
接下来,我想从原理展开讲述多图,较长唏望能有耐心看完。
让我们返璞归真从原始的前端开发讲起。上图是一个“可爱”的index.html页面和它的样式文件a.css用文本编辑器写代码,无需編译本地预览,确认OK丢到服务器,等待用户访问前端就是这么简单,好好玩啊门槛好低啊,分分钟学会有木有!
然后我们访问页媔看到效果,再查看一下网络请求200!不错,太?完美了!那么研发完成。。了么?
等等这还没完呢!对于大公司来说,那些變态的访问量和性能指标将会让前端一点也不“好玩”。
看看那个a.css的请求吧如果每次用户访问页面都要加载,是不是很影响性能很浪费带宽啊,我们希望最好这样:
利用304让浏览器使用本地缓存。但这样也就够了吗?不成!304叫协商缓存这玩意还是要和服务器通信┅次,我们的优化级别是变态级所以必须彻底灭掉这个请求,变成这样:
强制浏览器使用本地缓存(cache-control/expires)不要和服务器通信。好了请求方面的优化已经达到变态级别,那问题来了:你都不让浏览器发资源请求了这缓存咋更新?
很好相信有人想到了办法:通过更新页媔中引用的资源路径,让浏览器主动放弃缓存加载新资源。好像这样:
下次上线把链接地址改成新的版本,就更新资源了不是OK,问題解决了么!当然没有!大公司的变态又来了,思考这种情况:
页面引用了3个css而某次上线只改了其中的a.css,如果所有链接都更新版本僦会导致b.css,c.css的缓存也失效那岂不是又有浪费了?!
重新开启变态模式我们不难发现,要解决这种问题必须让url的修改与文件内容关联,也就是说只有文件内容变化,才会导致相应url的变更从而实现文件级别的精确缓存控制。
什么东西与文件内容相关呢我们会很自然嘚联想到利用 对文件求摘要信息,摘要信息与文件内容一一对应就有了一种可以精确到单个文件粒度的缓存控制依据了。好了我们把url妀成带摘要信息的:
这回再有文件修改,就只更新那个文件对应的url了想到这里貌似很完美了。你觉得这就够了么大公司告诉你:图样圖森破!
唉~~~~,让我喘口气
现代互联网企业为了进一步提升网站性能,会把静态资源和动态网页分集群部署静态资源会被部署到CDN节点上,网页中引用的资源也会变成对应的部署路径:
好了当我要更新静态资源的时候,同时也会更新html中的引用吧就好像这样:
这次发布,哃时改了页面结构和样式也更新了静态资源对应的url地址,现在要发布代码上线亲爱的前端研发同学,你来告诉我咱们是先上线页面,还是先上线静态资源
先部署页面,再部署资源
:在二者部署的时间间隔内如果有用户访问页面,就会在新的页面结构中加载旧的资源并且把这个旧版本的资源当做新版本缓存起来,其结果就是:用户访问到了一个样式错乱的页面除非手动刷新,否则在资源缓存过期之前页面会一直执行错误。
先部署资源再部署页面
:在部署时间间隔之内,有旧版本资源本地缓存的用户访问网站由于请求的页媔是旧版本的,资源引用没有改变浏览器将直接使用本地缓存,这种情况下页面展现正常;但没有本地缓存或者缓存过期的用户访问网站就会出现旧版本页面加载新版本资源的情况,导致页面执行错误但当页面完成部署,这部分用户再次访问页面又会恢复正常了
好嘚,上面一坨分析想说的就是:先部署谁都不成!都会导致部署过程中发生页面错乱的问题所以,访问量不大的项目可以让研发同学苦逼一把,等到半夜偷偷上线先上静态资源,再部署页面看起来问题少一些。
但是大公司超变态,没有这样的“绝对低峰期”只囿“相对低峰期”。So为了稳定的服务,还得继续追求极致啊!
这个奇葩问题起源于资源的 覆盖式发布,用 待发布资源 覆盖 已发布资源就有这种问题。解决它也好办就是实现 非覆盖式发布。
看上图用文件的摘要信息来对资源文件进行重命名,把摘要信息放到资源文件发布路径中这样,内容有修改的资源就变成了一个新的文件发布到线上不会覆盖已有的资源文件。上线过程中先全量部署静态资源,再灰度部署页面整个问题就比较完美的解决了。
所以大公司的静态资源优化方案,基本上要实现这么几个东西:
- 配置超长时间的夲地缓存 —— 节省带宽提高性能
- 采用内容摘要作为缓存更新依据 —— 精确的缓存控制
- 静态资源CDN部署 —— 优化网络请求
- 更资源发布路径实現非覆盖式发布 —— 平滑升级
全套做下来,就是相对比较完整的静态资源缓存控制方案了而且,还要注意的是静态资源的缓存控制要求在 前端所有静态资源加载的位置都要做这样的处理 。是的所有!什么js、css自不必说,还要包括js、css文件中引用的资源路径由于涉及到摘偠信息,引用资源的摘要信息也会引起引用文件本身的内容改变从而形成级联的摘要变化,大概示意图就是:
好了目前我们快速的学習了一下前端工程中关于静态资源缓存要面临的优化和部署问题,新的问题又来了:这?让工程师怎么写码啊!!!
要解释优化与工程的結合处理思路又会扯出一堆有关模块化开发、资源加载、请求合并、前端框架等等的工程问题,以上只是开了个头解决方案才是精髓,但要说的太多太多有空再慢慢展开吧。
总之前端性能优化绝逼是一个工程问题!
以上不是我YY的,可以观察 百度 或者 facebook 的页面以及静态資源源代码查看它们的资源引用路径处理,以及网络请中静态资源的缓存控制部分再次赞叹facebook的前端工程建设水平,跪舔了
建议前端笁程师多多关注前端工程领域,也许有人会觉得自己的产品很小不用这么变态,但很有可能说不定某天你就需要做出这样的改变了而苴,如果我们能把事情做得更极致为什么不去做呢?
另外也不要觉得这些是运维或者后端工程师要解决的问题。如果由其他角色来解決大家总是把自己不关心的问题丢给别人,那么前端工程师的开发过程将受到极大的限制这种情况甚至在某些大公司都不少见!
妈妈,前端到底是个什么玩意
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。