源码保密
Ⅰ 公司如何保护源代码不被员工泄漏
您好。感谢您给我这次回答的机会。
首先,我认为这个有两种方法,看你怎么选。
第一种:
限制代码库只能在公司内网访问,公司之外怀能下载代码;
限制只能用公司的电脑下载代码、编写代码、提交代码;
限制访问代码库的权限,发人员不授予访问和自己不相关代码库的权限;
能访问代码的电脑上安装监控软件,号称可以监控所有员工活动;
设置公司网络防火墙,禁止访问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,有什么用?
反之,就算没有源代码。人家拍拍屁股走人。然后还他妈实现,你有什么办法?
Ⅱ 使用python语言如何保密源代码以防止逆向工程
大家都很忙,谁有时间看你的的烂代码!
如果真的怕泄露,别用python.
我以前做过这类事情,而且当时更严格,需要打包部署到客户的服务只在有效期内有效,超过有效期必须更新证书才行。
Python代码用任何方法都没法保证保密性,这个时候你可以考虑用一个工具“nuitka”,这个工具会把你的python源代码映射为c++然后编译为二进制,因此对方是无论如何得不到你的源代码的。
代价就是nuitka这个工具并不完美,有一些限制并不能100%完美的转换所有python代码。
1.用Cython编译python成 Windows的pyd文件或Linux的so文件,二进制文件相对安全性较高。
2.用源码混淆器把代码搞的又臭又长。。。混淆完了再用Cython编译为二进制。。。这样静态反编译逆向难度也不小。
3.同其他语言程序一样,可以对调试状态进行检测,当处于调试状态时退出程序或进入混乱代码耗费逆向工程人员心神。
4.分享一个跨平台反调试手段,检测函数运行时间,加断点会导致函数运行时间变长,也可感知正在被调试。
Python是提倡开源的,既然选择Python还是拥抱开源才好~ 都开源还担心逆向工程嘛
没有不能逆的软件。
只要汇编语言过关,逆向工程都是可以实现的,不要有其它想法。
你唯一可以做的,就是不让别人用python读取源代码而已。那样实现起来比较简单。
python 适合开发服务器程序,或者自己科研使用的程序,如果是 作为用户程序,安装到 pc 或手机上,还是 其它 c++ 或java 比较合适
1)可以把需要保护的部分用c语言实现,从而编译成so等文件,这样逆向的成本会比较高,可以防止直接打开python文件看到代码逻辑。
2)so文件通过ida等工具也是可以反汇编的,可以通过对c语言进行代码混淆,花指令等操作,提高通过ida等反汇编工具的分析难度。
3)不存在绝对无法逆向的技术手段,因此只能是看具体需求,选择具体的防逆向的技术手段。
有工具类似py2exe转成可执行程序,隐藏全部源代码,虽然bytecode还是可以反编译,但是难度大多了
1. 最稳的就是你改cpython加载代码的过程,改zip包读取最稳。
2. 借助一些加密工具在编译pyc之前进行一定的混淆,可以防君子,自我安慰一下。
商用一般都是用第一种办法,小打小闹用第二种。
可以考虑使用pymod工具,使用pymod pack 将模块加密打包,发布的时候一个模块就一个文件。
先睹为快,看看一个项目发布的时候,只有几个文件,
main.py 项目程序入口
setting.py 项目配置
apps 项目模块
plusins 项目插件目录
创建项目 pymod create demo1
cd demo1
创建模块 pymod add mod1
启动pycharm 开始编写功能模块
一个模块默认由三个文件组成
__init__.py 、 handlers.py 、param_schemas.py
业务逻辑主要在handlers.py中编写
__init__.py
from pymod.blueprint import Blueprint api = Blueprint("/mod1") from .handlers import *
param_schemas.py
schema_sfz = { "type": "object", "required": ["sfz", "nl"], "properties": { "sfz": { "type": "string", "minLength": 18, "maxLength": 18, "description": "身份证明号码" }, "nl": { "type": "integer", "minimum": 0, "maximum": 150, "description": "年龄" } } }
handlers.py
from . import api from pymod.ext import RequestHandler, params_validate,TrueResponse,FalseResponse from .param_schemas import schema_sfz from pymod.plugins import sfz_check @api.add_route('/hello') class Hello(RequestHandler): def get(self): self.write('Hello World') @params_validate(schema_sfz) def post(self): sfz = self.get_json_arg("sfz") nl =self.get_json_arg("nl") # self.write(TrueResponse(sfz=sfz, nl=nl)) if sfz_check.check_sfzmhm(sfz): self.write(TrueResponse(hint="身份证明号码验证通过")) else: self.write(FalseResponse(hint="身份证明号码验证失败"))
三、项目部署
程序调试 修改setting.py
# 开发模式下 运行的模块名称必须填写
moles = ["mod1"] moles_config ={ "mod1": { "deny_ip": "", "allow_ip": "*" } }
启动程序 python main.py
调试没有问题,进入发布模式
在项目目录下
pymod pack mod1
在target目录下生成mod1.mod文件,将其复制到apps目录中
修改setting.py
# 开发模式下 运行的模块名称必须填写
moles = []
再次运行 python main.py 测试
一切OK,系统就可以发布了。
说不能保密的,是没有研究过python的机制的。我做个一个项目,所有源代码自定义加密,运行时解密。
Ⅲ python 如何保密源代码
python 如何保密源代码?
相关推荐:《Python教程》
加密方式
对 Python 加密时可能会有两种形式,一种是对Python转成的exe进行保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程。
1、对 python转exe加密,下载最新版Virbox Protector加密工具,使用加密工具直接对demo.exe进行加密操作。
2、对.py/.pyc加密。
第一步,使用加密工具对 python 安装目录下的 python.exe 进行加密,将 python.exe 拖入到加密工具 VirboxProtector 中,配置后直接点击加密。
第二步,对.py/.pyc 进行加密,使用 DSProtector 对.py/.pyc 进行保护。
Ⅳ 公司的源代码应该怎么保护,防止泄密呢
推荐使用域之盾系统,域之盾系统安装方便点点鼠标即可完成安装部署,操作简单 功能全面,可针对日常办公/文字编辑/图纸编辑/图片编辑进行一键透明加密,比如在域之盾管控端设置好针对WORD文件加密以后,客户端上的word文档会自动加密,加密以后的文件任何形式的非法外发拷贝传输 打开都是乱码 装有域之盾客户端的电脑设备之间可以无障碍传阅,也可以设置外发文件的生命周期,最大打开次数 最长打开天数 多方面保护数据安全不被泄密 域之盾系统的桌面管理功能支持实时画面,屏幕录像,微信QQ 钉钉 聊天记录 网页浏览 网址搜索记录等 可有效帮企业监督员工上网行为,适合企业使用
1. 透明加解密
系统根据管理策略对相应文件进行加密,用户访问需要连接到服务器,按权限访问,越权访问会受限,通过共享、离线和外发管理可以实现更多的访问控制。
2. 泄密控制
对打开加密文档的应用程序进行打印、内存窃取、拖拽和剪贴板等操作管控,用户不能主动或被动地泄漏机密数据。
3. 审批管理
支持共享、离线和外发文档,管理员可以按照实际工作需求,配置是否对这些操作进行强制审批。用户在执行加密文档的共享、离线和外发等操作时,将视管理员的权限许可,可能需要经过审批管理员审批。
4. 离线文档管理
对于员工外出无法接入网络的情况可采用系统的离线管理功能。通过此功能授权指定用户可以在一定时间内不接入网络仍可轻松访问加密数据,而该用户相应的安全策略仍然生效,相应数据仍然受控,文档权限也与联网使用一样。
5. 外发文档管理
本功能主要是解决数据二次泄密的威胁,目的是让发出的文档仍然受控。通过此功能对 需要发出的文件进行审批和授权后,使用者不必安装加密客户端即可轻松访问受控文件,且可对文件的操作权限及生命周期予以管控。
6. 审计管理
对加密文档的常规操作,进行详细且有效的审计。对离线用户,联网后会自动上传相关日志到服务器。
7. 自我保护
通过在操作系统的驱动层对系统自身进行自我保护,保障客户端不被非法破坏,并且始终运行在安全可信状态。即使客户端被意外破坏,客户端计算机里的加密文档也不会丢失或泄漏。