如何降低python開發(fā)的項目代碼泄露風(fēng)險?
python屬于腳本語言,解釋型語言,在python環(huán)境中,直接運行py文件就可以看到結(jié)果,如果項目直接發(fā)布出去,那就是在“裸奔”。所以很有必要對項目代碼加密。
一、先睹為快,看看一個項目發(fā)布的時候,只有幾個文件,
main.py 項目程序入口
setting.py 項目配置
apps 項目模塊
plusins 項目插件目錄
項目發(fā)布目錄一覽
二、創(chuàng)建項目
創(chuàng)建項目 pymod create demo1
cd demo1
創(chuàng)建模塊 pymod add mod1
啟動pycharm 開始編寫功能模塊
一個模塊默認(rèn)由三個文件組成
__init__.py 、 handlers.py 、param_schemas.py
業(yè)務(wù)邏輯主要在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="身份證明號碼驗證失敗"))
三、項目部署
程序調(diào)試 修改setting.py
# 開發(fā)模式下 運行的模塊名稱必須填寫
modules = ["mod1"] modules_config ={ "mod1": { "deny_ip": "", "allow_ip": "*" } }
啟動程序 python main.py
調(diào)試沒有問題,進入發(fā)布模式
在項目目錄下
pymod pack mod1
在target目錄下生成mod1.mod文件,將其復(fù)制到apps目錄中
修改setting.py
# 開發(fā)模式下 運行的模塊名稱必須填寫
modules = []
再次運行 python main.py 測試
一切OK,系統(tǒng)就可以發(fā)布了。
pymod 使用指南,訪問 https://pymod.cn