V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
sky857412
V2EX  ›  Python

如何使用 license 限制 Python web 运行

  •  
  •   sky857412 · 2023-09-01 11:24:19 +08:00 · 2483 次点击
    这是一个创建于 451 天前的主题,其中的信息可能已经有所发展或是发生改变。

    第一次使用 python ,使用 fastapi 开发了一个 web 项目,现在需要对项目进行限制,该如何实现呢? 源码也要部署到对方的机器上,如何防止它修改 license 的限制呢?

    24 条回复    2023-09-02 14:47:06 +08:00
    Ansen
        1
    Ansen  
       2023-09-01 11:46:03 +08:00
    混淆后打包成二进制?
    yanjieee
        2
    yanjieee  
       2023-09-01 11:49:20 +08:00
    之前用过 pyarmor 商业化,感觉还可以。
    iorilu
        3
    iorilu  
       2023-09-01 14:12:41 +08:00
    你提供源码的话 ,没法限制啊

    不管你怎么弄, 对方随便找个人改下代码就行

    再说了,web 项目很难限制, 有这种需求应该用 go 之类的东西开发
    elechi
        4
    elechi  
       2023-09-01 14:33:15 +08:00
    源码都给了,没法限制了
    Vegetable
        5
    Vegetable  
       2023-09-01 14:35:20 +08:00
    写点 bug
    jenlors
        6
    jenlors  
       2023-09-01 14:37:00 +08:00   ❤️ 1
    之前做过相关的方案,使用 [https://github.com/Falldog/pyconcrete]( https://github.com/Falldog/pyconcrete) 加密代码,然后代码里面导入 license ,license 里面写入过期时间、机器码之类的信息,license 使用对称加密之类的算法加密,然后在程序启动的时候解密并且检测 license 有效性。
    Jirajine
        7
    Jirajine  
       2023-09-01 14:39:47 +08:00 via Android
    用 nuitka 把业务库编译一下。
    coolair
        8
    coolair  
       2023-09-01 14:47:26 +08:00
    @yanjieee #2 这个软件有开源版?我看有个 GitHub 。这个软件可以整个项目加密吗?还是只能单文件加密?
    Abbeyok
        9
    Abbeyok  
       2023-09-01 14:48:21 +08:00
    在用 pyarmor ,可以试试
    bianhui
        10
    bianhui  
       2023-09-01 15:13:06 +08:00
    给源码就没法限制住了。不用折腾了。
    sunwei0325
        11
    sunwei0325  
       2023-09-01 15:21:59 +08:00
    事先将代码用密钥加密一下, 然后在 sys.meta_path 里面加载的时候解密一下, 关键词: importlib
    Ackvincent
        12
    Ackvincent  
       2023-09-01 15:57:05 +08:00
    pyarmor +1
    jjx
        13
    jjx  
       2023-09-01 16:00:49 +08:00
    部分保护,部分开放

    需要保护的部分用 cython 编译
    fcfangcc
        14
    fcfangcc  
       2023-09-01 16:47:40 +08:00
    不要给源码, 用 cython 把.py 编译成 .so 然后打包部署
    Mars2333
        15
    Mars2333  
       2023-09-01 17:05:10 +08:00
    t/969968
    这答案不就来了嘛
    flyqie
        16
    flyqie  
       2023-09-01 17:18:36 +08:00
    先 aes 再 rsa(私加公解), 理论上来说不可能存在伪授权.

    至于能不能通过其他手段改密钥破...那就是 cython 的事情了.
    flyqie
        17
    flyqie  
       2023-09-01 17:23:18 +08:00
    @flyqie #16

    没记错的话 rsa 比较特殊, 目前的主流实现是用私钥文件可以拿到公钥文件, 但用公钥文件基本不可能拿到私钥文件(或者说极其困难).
    iorilu
        18
    iorilu  
       2023-09-01 17:29:04 +08:00
    @sunwei0325 密钥写在哪里, 总是明文啊
    lanwairen123
        19
    lanwairen123  
       2023-09-02 09:05:53 +08:00
    之前遇到一个加密,是直接修改 Python 主程序代码,植入 openssl 解密模块,解密公钥硬编码到 python 主程序,然后用私钥加密代码。程序运行直接用修改过的 python 程序执行,先解密代码再运行。
    lanwairen123
        20
    lanwairen123  
       2023-09-02 09:10:56 +08:00
    只是为了防止修改 license 的限制的话,把授权信息用私钥加密,程序内置公钥解密,只要私钥不泄露,理论上就可以防止修改 license 限制,但有源码这些限制等于没有
    sky857412
        21
    sky857412  
    OP
       2023-09-02 09:24:27 +08:00
    @jenlors 好的,我去试试
    sky857412
        22
    sky857412  
    OP
       2023-09-02 09:26:40 +08:00
    @yanjieee 感谢,我去研究下
    buffzty
        23
    buffzty  
       2023-09-02 10:28:55 +08:00
    你随便限制 用不了算我输
    SenLief
        24
    SenLief  
       2023-09-02 14:47:06 +08:00
    python 天生不适合,还是改用 go 。

    要不就不给源码,编译成库,在外面套一层认证服务器。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4830 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:02 · PVG 12:02 · LAX 20:02 · JFK 23:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.