源碼保密
Ⅰ 公司如何保護源代碼不被員工泄漏
您好。感謝您給我這次回答的機會。
首先,我認為這個有兩種方法,看你怎麼選。
第一種:
限制代碼庫只能在公司內網訪問,公司之外懷能下載代碼;
限制只能用公司的電腦下載代碼、編寫代碼、提交代碼;
限制訪問代碼庫的許可權,發人員不授予訪問和自己不相關代碼庫的許可權;
能訪問代碼的電腦上安裝監控軟體,號稱可以監控所有員工活動;
設置公司網路防火牆,禁止訪問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. 自我保護
通過在操作系統的驅動層對系統自身進行自我保護,保障客戶端不被非法破壞,並且始終運行在安全可信狀態。即使客戶端被意外破壞,客戶端計算機里的加密文檔也不會丟失或泄漏。