You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

授权相关:如何用密码或其他认证方式保护Python代码?

代码授权与保护方案构想

需求背景

我正在开发一款小型实用工具,既要对外共享给第三方,内部也会使用。雇主要求通过防止未授权使用来“掌控”这款应用,具体要求如下:

  • 采用密码认证:向使用者分发密码,通过GUI输入完成认证,不能在客户端硬编码密码校验逻辑,避免使用者直接修改代码跳过校验。
  • 主应用代码需避免被使用者轻易获取,且不想使用代码混淆或编译的方式增加逆向难度。

我的思路是:让客户端启动时连接运行Flask API的远程服务器,校验用户输入的密码;若密码有效,服务器返回可执行的代码指令给客户端运行。我清楚执行远程代码的风险,但对此不在意。

构想的实现方案

远程服务器端Flask API

from flask import Flask, request  # 补充原代码遗漏的request导入

PASSWORD = 'demo'

# 也可以读取本地脚本文件内容作为字符串返回
def secret_script_code():
    codestring = """
    import math
    
    x = 1
    y = 5
    
    def try_this(x, y):    
        return math.sqrt((y-x))
        
    if __name__ == "__main__":
        result = try_this(x, y)
        print(f"执行结果:{result}")
    """
    return codestring

app = Flask(__name__)

@app.route('/', methods = ['GET','POST'])
def index():        
    if request.method == 'POST': 
        # 读取请求中的密码,避免空值报错
        password = request.form.get('password', '')
        if password == PASSWORD:            
            # 返回Python脚本字符串供客户端执行
            return secret_script_code()            
    # GET请求或密码无效时返回提示代码
    return "print('Invalid password!')"

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=False)  # 生产环境建议关闭debug并绑定公网可访问地址

客户端应用

import requests

def run_program():
    # 实际场景替换为GUI输入密码逻辑,示例用控制台输入模拟
    user_password = input("请输入授权密码:")
    payload = {'password': user_password}
    # 替换为实际的服务器公网地址
    r = requests.post("https://xxx.xx.xx.x/", data=payload)
    # 执行服务器返回的代码
    exec(r.text) 

if __name__ == "__main__":
    run_program()

疑问与优化方向

我知道如果使用者想要查看“机密代码”,只需添加print(r.text)就能输出exec执行的字符串。考虑将代码字符串编译为字节码后再发送,是否能提升安全性?

我明白所有代码都可被反编译,对于有逆向动机的人来说没有绝对的防护,但目标场景中没人会花时间做这件事。我们的核心需求是防止应用被轻易复制、管控使用权限。


内容的提问来源于stack exchange,提问作者unbutu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:25:28