⑴ 公司的源代码应该怎么保护,防止泄密呢
首先要明确,哪些数据是核心机密数据,不能让普通员工轻易接触到的,即使是研发型公司的代码,也是会划分等级的,要在保证员工的工作效率的前提下,对代码实施保护措施。
下面简单谈一下我的看法,讲讲如何防止员工的代码泄露。
首先要明确以下两点:
1、不影响被防范的成员(比如新程序员)工作。让其能正常运行、调试、查看日志等。
2、对核心代码封死,需要保护的部分不可见。
再来看看有哪些具体做法:
签署保密协议
对源代码分级,清楚知道什么是需要保护的
为版本管理服务器上的工程设置读取密码
源码版本控制,按照职责和权限进行划分
确保架构做分层
屏蔽USB和光驱
每人两台电脑,分别连接不同网络
封闭式开发、禁止上互联网
使用加密软件
使用加水印功能
使用云桌面技术
实施网络隔离
……
当然,每个公司会根据自身的实际情况来选择一种适合的方法,前提是不影响员工工作效率,不能让员工产生抵触情绪。公司的价值都是员工创造的,所以一定要秉着以人为本的原则,让员工对公司忠诚,减少离职,这才是利益最大化的方法。
在以上这些方法中,个人较为推荐的是使用云桌面或者实施网络隔离,通过云桌面实现数据不落地,防止被拷贝;实施网络隔离可以有效阻断数据的外泄。之前看过《企业网络隔离建设指南》,感觉还不错,推荐给大家参考一下。
⑵ 程序员必备技能-git 不会到还有人不会用吧,不会吧不会吧
版本控制 :版本控制最重要的作用是记录一个文件的修改 历史 记录,并且根据该记录可以切换到对应的 历史 版本,这个也是由个人开发到团队开发重要的工具。
集中式版本控制系统 :具有一个统一的中央服务器,里面存放着项目的源码。各个客户端都从该服务器中拉取代码和上传自己编写的代码到服务器中。
优点:各个客户端可以查看其他客户端在该项目中做了什么,一定程度上了解项目的进度。同时,管理员可以控制各个程序员的权限。
缺点:无法应对中央服务器的单点故障问题,当中央服务器宕机后,各个客户端都不能提交代码和拉取代码,同时在宕机的期间,做不到版本的 历史 记录。
分布式版本控制系统 :每个客户端都是一个版本库(本地库),各个客户端维护自己的版本 历史 记录。各个客户端的协作是通过使用远程库(GitHub等)进行的,push把代码推送到远程库中,pull把远程库的代码拉取下来。
优点:解决了集中式版本控制的缺点。在远程库宕机的情况下(虽然说这个概率极低),客户端还是能进行开发的,因为版本的控制是在本地进行的。同时,每个客户端保存的是整个项目,包括 历史 记录,使得更加安全。
Git的工作机制
代码托管中心(远程库) :
底层:head指针指向分支,分支指针指向版本号。当版本号发生变化时,分支指针指向对应的版本号
(1)配置git的忽略文件
(2)在idea中配置git
(3)初始化项目
⑶ 程序员如何方便的管理自己以前写的代码
一、代码的最大长度。
虽然在Java的编译器中对于代码的最大长度没有硬性的规定。但是如果代码的长度太长,超过了编译器的最当行宽,显然阅读起来比较麻烦。为此根据笔者的经验,通常情况下Java源代码的行长度不应该大于80个字符。如果超过这个长度的话,在一些开发工具和编辑器上就无法很好的显示。如需要通过滚动条来显示后面部分的代码。当其他项目成员阅读这超长的代码时,就会看得眼花缭乱。当人的温饱问题解决了之后,就需要开始注意美观方面的问题。所以程序开发人员在开发应用程序的时候,要尽量避免书写长的代码。如果代码的每行长度确实需要超过80个字符的话(最好将每行代码的长度控制在70个字符左右),那么就需要对代码进行分行。
二、在恰当的地方对代码进行分行。
笔者建议将Java源代码每行的长度控制在70个字符、最大不超过80个字符。当超过这个字符长度的时候,开发人员就需要考虑在恰当的地方对他们进行分行处理。不过这个分行也不是说开发人员想在哪里进行分行就在哪里进行分行。这个分行是有一定技巧的。虽然这些技巧大部分并不是强制性的规定,但是都是一些专家们的经验总结,可以提高代码的阅读性。为此笔者希望各位程序开发能够严格的遵守。
技巧一:高层折行优于低层折行。
这个技巧是说,在考虑对代码进行折行处理的时候,需要注意代码的层次性。如某段代码涉及到混合四则运算,而四则运算又有明显的运算顺序,此时对代码进行折行时就最好能够在四则运算的关键顺序上进行折行处理。如现在有如下的一段代码:
Mynum=mynum1*(mynum1+mynue2+mynum3-mynum4)+8*mynum5
如果要对这段代码进行折行的话,该在哪个地方加入一个折行符号呢?如果是笔者处理的话,笔者会按如下的格式对代码进行折行处理。
Mynum=mynum1*(mynum1+mynue2+mynum3-mynum4)+8*mynum5
这主要是根据四则运算的运算层次来进行折行的。显然,*符号的优先级要比+符号要高。所以在+号前面对其进行折行处理,那么就可以一目了然的反应出代码的运算层次。可以大幅度的提高代码的阅读性。所以代码折行的第一个技巧就是高层折行优于低层折行。如此的话,可以使得应用程序的结构代码更加的清晰,更容易被团队成员所理解。
技巧二:在运算符前面进行折行处理。
其实在如上的折行技巧中,还隐藏着一个规则,即在运算符之前进行折行。如上例所示,笔者就是在+号前面进行折行,而不是在+号后面进行折行处理。这主要也是考虑到代码的可读性。如上面这个例子中,如果在+号后面进行折行处理的话,则下一行就会给人一种凭空多出来的感觉,显得代码很不连贯。跟这个规则类似,如果在折行处理的时候遇到逗号时,那么最好能够在逗号后面进行折行。如在一个方法中,需要传入5个参数。此时如果代码行比较长,那么就需要在几个参数之间进行折行处理。此时最理想的折行位置,就是在某个参数的逗号后面。注意,使在逗号后面进行折行,而不是在逗号前面。因为一个参数一个逗号是匹对的。而如果一个逗号加一个参数,则让人看起来很不舒服。
技巧三:这行代码的对起方式。
当不得已对代码进行折行处理时,下一行的代码应该与其同等级的代码行左对齐。如上例所示,在+号前面将某一段四则运算公式进行折行处理的时候,其+号符号已经采取缩进处理。其缩进后的效果就是要与其同等级的代码行左对齐。如此的话,明眼人一看就知道这段代码采取过折行处理;而且跟上一行代码的层次关系。当一段代码被分割成三行甚至跟更多行数的时候,这个规则会非常的有用。如果能够严格遵守这个规则,即使将代码分割成多行,看起来也不会觉得那么混乱。反而给人一种比较有层次的感觉。
另外在采取缩进处理的时候,可以利用Tab键来提高缩进处理的效率。因为直接按空格的话,有可能空格字符数量不一致,会让人觉得层次不起,产生比较大的混乱。一般情况下,当代码行两侧距离页边的距离比较大,看其来不怎么舒服时,可以在代码行中通过插入TAB键(会在代码行中连续插入8个字符)来提高代码的阅读性,让代码的缩进实现统一。
技巧四:为变量寻找一个合适的位置。
在编写应用程序时,尽量将变量声明放置在一个代码块的开始处,也就是说{}花括号的开始位置。虽然说可以在需要使用变量的时候再对其进行声明。但是笔者不同义如此操作。因为如果在的呢感到使用变量的时候再来声明变量时,会降低代码的可读性。同理,也需要避免低层声明与高层声明重复,这样会引起代码混乱并可能引发程序功能性错误。而且这种错误在后续的排错中很难被发现。为此要在应用程序开发的时候就要尽量避免这种错误。
在声明变量的时候,有时候可能代码很简单,生命变量的行总共加起来也不会超过十个字符。此时能否把多个变量的声明写在同一行呢?从就技术上来说,这是可行的。也就是说,Java编译器允许将多个变量定义在同一行上。但是从阅读性上来说,这并不是很好的做法。笔者的建议是,即使变量定义再简单,或者变量比较多,也最好分行进行变量的声明。也就是说,一行声明一个变量。这可以提高代码的可阅读性。而且有时候往往需要对变量加一个注释说明变量的用途,如果以行定义一个变量,添加行注释也相对简单许多。
总之,以上的这些折行的规则基本上不会影响到代码的运行。但是,对于代码的维护与后续的排错、升级、二次开发等等具有不可忽视的作用。而且现在基本上应用程序开发式团队开发,故大家都遵守同样的代码编写规范是非常重要的。笔者在开发一个应用程序的时候,事先都会花一定的时间,跟项目成员强调这些折行的规则。目的只有一个,就是提高代码的可读性,便于后续代码的共享与维护。毕竟后续面对这些代码的,并不是客户,而是我们自己。我们程序员在编写代码的时候,不能够搬起石头砸自己的脚。笔者认为,现在一个合格的程序人员,不仅技术功底上要过得硬,而且还必须要遵守这些无形规则的约束。难怪现在这么多企业在挑选程序开发人员的时候,都会注明良好的编码规范。现在对于这些无形中的条条框框,项目经理已经开始重视起来。
⑷ DirectX如何获得管理员权限
你到控制面板里,找到账户,看是否账号中有管理员权限的,看有几个账号,你必须以管理员的账号登录才可以用。
具体如下:
1、简介
编程是编写程序的中文简称,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,是计算体系按照该计算方式运行,并最终得到相应结果的过程。
为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。
2、汇编程序
汇编程序。使用汇编语言编写计算机程序,程序员仍然需要十分熟悉计算机系统的硬件结构,所以从程序设计本身上来看仍然是低效率的、繁琐的。但正是由于汇编语言与计算机硬件系统关系密切,在某些特定的场合,如对时空效率要求很高的系统核心程序以及实时控制程序等,迄今为止汇编语言仍然是十分有效的程序设计工具。
3、执行原理
计算机对除机器语言以外的源程序不能直接识别、理解和执行,都必须通过某种方式转换为计算机能够直接执行的。这种将高级编程硬件程序设计语言编写的源程序转换到机器目标程序的方式有两种:解释方式和编译方式。
⑸ 公司如何保护源代码不被员工泄漏
您好。感谢您给我这次回答的机会。
首先,我认为这个有两种方法,看你怎么选。
第一种:
限制代码库只能在公司内网访问,公司之外怀能下载代码;
限制只能用公司的电脑下载代码、编写代码、提交代码;
限制访问代码库的权限,发人员不授予访问和自己不相关代码库的权限;
能访问代码的电脑上安装监控软件,号称可以监控所有员工活动;
设置公司网络防火墙,禁止访问github这样的开源网站;
把上面所有的规矩记录下来,教育员工知道,让他们签字画押必须遵守,钣者开除而且报警。
第二种:
招募受过良好教育、品行良好、专业团队工作经验的开发者;
对开发者友善,让他们不会对公司心怀怨恨;
把开发者的利益和公司利益关联起来,让他们不想为了蝇头小利牺牲公司利益。
其次,你可能不知道的东西。
1.绝大部分的公司(bat另说) 手中的源代码商业价值根本不高。
2.绝大部分的公司的源码质量都比不过github的哪些开源类库。
3.绝大部分的公司的源码都属于高度定制化的开发(就是换个公司,这个软件几乎就没有什么价值了)。
4.绝大部分的公司都不是靠“软件技术”赚钱的。
5.绝大部分的人都不会傻到直接把偷来的源码用于“商业活动”(非但不一定赚钱还可能吃官司,还不如去github上扒开源代码)
6."防御"的成本数倍于"重新开发一套"软件.
所以看淡一点源码,它在绝大多数公司中其实并不值”几个钱“虽然它的创造成本可能”很贵“。
所以说,这些东西掌握以后,就基本上不用担心代码被泄露了。
理论上做到公司电脑无法和外界连通,进出人员不得携带任何外设就可以彻底解决代码泄漏的问题。但是商业公司比较难做到。下面我们来的分析一下员工有没必要窃取代码,有没能力窃取到下完整的代码。
现在有一定规模的公司应用都是服务化的,不同的小组负责不同的服务,有各自的代码查看权限。所以一个或者几个程序员无法拿到全部代码。
超大规模的应用就更复杂了,有前台,中台,后台,APP等,架构也极其复杂,就算某个程序员获得到了全部代码,也没有能力搭建并运行起来。
小规模公司的代码基本都是业务逻辑代码,泄不泄漏可能也没有太大关系。
防止别人偷拿代码是很难的,倒不如加强企业文化,提高员工的职业素养。尊重是互相的,做到用人不疑,我想大部分人也不会以怨报德。
说说我们公司是怎么做的吧:
1. 封了网络文库、网络网盘、CSDN等网站凡是能上传文件的网站,我们公司都封了,这样就防止员工把内部文件上传到这些网站被泄密。但是这样做的一个后果就是员工想查一些资料,在这些网站都打不开,只能用自己的手机去查了,造成了一些工作的不便。
2. 封了USB、蓝牙接口,以及光驱凡是能从电脑上拷贝文件到外部的接口,我们公司都封了,这样员工就无法把公司的文件拷到外面了,避免了泄密。这样做的后果也给我们带来了一些工作上的不便。比如以前我们做蓝牙测试的时候,需要把测试的App拷贝到手机上旧非常困难。后来公司了解了我们的困难,允许我们提申请,经过上级领导的批准后,可以给电脑开通USB权限,但是拷贝的内容也是被公司监控,所以也只能拷贝需要的内容。申请的时候有选择开通的时间,到期后,USB权限自动关闭了。
3. 禁止将公司电脑带出公司为了防止员工私下里想办法把公司电脑的文件拷走,公司禁止把电脑带出办公室。如果需要带电脑去客户那里,则需要向公司提出申请,申请的时候也要选择带出和带回的时间,这样基本上就杜绝了员工泄密的可能。如果员工在外出途中丢失了电脑,这就会成为一个大事件,会汇报到公司最高层,对员工个人的影响也很大。公司有一套流程专门应对这类事件。曾经我们公司有人带电脑去客户那里,跟客户吃饭喝醉了,打车回家把电脑弄丢了,引起了很大的后果,这个事经常会作为事例来教育全体员工。
4. 电脑里安装监控软件公司的电脑里都安装有监控软件,网管可以监控到每一台电脑。员工在电脑上打印,发传真、发邮件这些活动都受到监控。打印机也能看到每个人打印、传真的内容。员工如果有泄密的行为都可以及时监控到。至于员工对着电脑拍照,公司应该也能检测到。所以公司的电脑不要做一些私人的事情,很容易被监控到。
5. 封了QQ、微信等可以传输文件的社交软件QQ、微信这类可以传递文件的社交软件在公司的电脑上是不能安装的,也防止了员工通过这些软件把文件传输到外面。公司内部只能使用微软自带的聊天工具Lync,这个软件也不能传输文件,只能聊天。如果公司内部需要传输文件,只能用公司的服务器或者邮件。有些大的文件,只能尽量压缩,否则传输会非常不方便。
6. 禁止员工安装公司允许之外的软件严格监控员工的软件安装列表。公司给出了允许安装的软件列表,超出范围的安装软件会被监控到,让员工删除掉。这样员工无法安装一些上传文件的软件了,防止泄密了。员工也不能随意从网络上下载安装文件,防止一些木马病毒藏在软件里,盗取公司文件。
公司防止员工泄密的手段是很多的,每年还要对员工进行安全教育,规范员工的行为。
虚拟化桌面服务器,使用虚拟桌面和瘦客户机,瘦客户机禁止usb存储。瘦客户机不能联网但可以连虚拟化服务器,服务器不能连外网。单独设立一台机器可以联网,也可以连接一台ftp虚拟机(虚拟化服务器中的FTP用于内外网共享文件),联网机器下载的东西了上传到ftp供其他桌面虚拟机使用。桌面虚拟机上传的文件需要管理员通过才能被这台外网机器看到下载。
1,不允许携带电子设备进入工作区域,进门经过金属探测。
2,公司电脑不允许连接外网。
3,封死USB等外设接口。
4,机箱锁死,防止拆硬盘。
5,安装摄像头对准每一个工位,一旦发现使用拍照设备等,进行相应处罚。
这几个只有一起用才能完全防止泄露,否则都有办法。
你去看看某研究院的一些规章。禁止笔记本等带入,不小心带入了,对不起,设备留置24小时,彻底格式化。手机,存储设备也一样禁止带入。开发机全部内网。没有WIFI,鼠标键盘全部有线,粘死。机箱上锁。USB等接口全部封掉。人员权限限制,绝大部分人员不能下载全部代码。
首先管理层面,领导要重视信息安全,然后按照iso27000系列信息安全标准去做。信息安全和物理安全是要互相配合的。办公区要根据安全级别设置不同的管理措施,信息资产要根据价值设置不同的标签,区分关键资产和非关键资产,另外信息资产只能有一个出口要经过审批后才能出去。技术层面的措施也可以用,但是不能乱用。另外开发环境安全可以参考15408的站点审查部分。
防止不了,有合作公司管理严格,我们都用手机拍照沟通,所以除非禁用手机和一切拍照设备,否则都给你拍出来。
我觉吧吧,关键是人。而不是制度。
这么说吧,光有源代码屁也不是。要是没人build都困难。别说上线和运行了。
所以,你要是选信任的人,而不是选信任的方法。那么就算别人真偷了,拿一堆源代码回去,都没办法build,有什么用?
反之,就算没有源代码。人家拍拍屁股走人。然后还他妈实现,你有什么办法?