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
XiaST
V2EX  ›  Python

在创建 Python 应用时该如何隐藏 appid、keys 等信息?

  •  1
     
  •   XiaST · 2016-01-28 15:02:52 +08:00 · 3997 次点击
    这是一个创建于 3258 天前的主题,其中的信息可能已经有所发展或是发生改变。

    准备写一个简单的翻译工具给别人用,但是不想让别人看到我的 appid 和 keys ,想问一下大家有什么好的方法能够隐藏这些敏感信息??

    16 条回复    2016-01-29 18:37:43 +08:00
    xujif
        1
    xujif  
       2016-01-28 15:12:07 +08:00
    两个方案,一个是放在服务端请求,客户端直接看不到。
    第二个就是写个加密算法加密下。一般情况下甚至不需要加密算法, base64 什么糊弄下就好,能研究的人你加密了也看得到,不研究的人糊弄下就行
    jakes
        2
    jakes  
       2016-01-28 15:13:33 +08:00
    弄成网页或将 AppID 放在后台,以 API 提供服务。服务器通过环境变量设置这些敏感信息。
    ---
    楼下补充更好的,学习下~
    smartdie
        3
    smartdie  
       2016-01-28 15:18:49 +08:00
    写二进制文件,程序解析。但是人家一看你源码就什么都知道了。没啥办法。
    pimin
        4
    pimin  
       2016-01-28 15:23:49 +08:00 via iPhone
    加密存放在文本文件里,读取解密。
    因为是自欺欺人,所以随便搞个加密就行
    incompatible
        5
    incompatible  
       2016-01-28 15:24:19 +08:00
    如果是工具,你不应该内置 appId 和 appKey ,应该给个配置界面或者配置接口让用户配置自己的 appId/appKey 。
    如果一定要用你自己的 appId/appKey ,那就只能做成服务了。
    oott123
        6
    oott123  
       2016-01-28 17:55:44 +08:00
    * 面向开发者:丢环境变量
    * 面向最终用户:做个反代
    cxl008
        7
    cxl008  
       2016-01-28 18:07:36 +08:00
    写 c , python 去调?
    cosven
        8
    cosven  
       2016-01-28 20:12:37 +08:00
    个人认为:你现在的根本问题是:用户可以得到源码。用户一旦拿到源码,你无论怎样加密都没用了把。

    所以真想保密的话,就需要打包成二进制的包。 pyinstaller, py2exe 之类的打包程序可能会用得到。
    typcn
        9
    typcn  
       2016-01-28 20:25:08 +08:00
    你的服务器与翻译服务器通讯
    客户端与你的服务器通讯
    dapang1221
        10
    dapang1221  
       2016-01-28 20:48:37 +08:00
    还是没辙,不管你怎么加密,人家一抓包,就知道你 post 出去了什么东西。。所以如果需要保密的话,一部分逻辑最好用服务器做
    leavic
        11
    leavic  
       2016-01-29 09:56:52 +08:00
    我所知的 python 几乎是无法加密的,解释性的语言最终都会被还原成可执行脚本。
    放在服务器上,用公私密钥加密,但问题回到 python 上,公钥要公开,私钥放源码里还是可以被查看,最终还是完蛋。

    楼上说的打包 EXE 也不靠谱,这些打包其实就是给你打包了 python 解析器和相应的包而已,运行时解压到临时目录运行。根本没有实际的编译可言,不信你随便触发一个 exception 看看,哪个文件哪行出问题都清清楚楚。
    leavic
        12
    leavic  
       2016-01-29 09:57:59 +08:00
    @cxl008 写 c module 可能还算靠谱的建议,改天研究一下。
    fy
        13
    fy  
       2016-01-29 10:27:22 +08:00
    写 C 就靠谱吗?想看不还是能看,直接打开模块搜一下字符串就出来了。而且不还有抓包大法吗?

    实在想要藏一下的话弄个 pyc 进去,但也只是略好一些。这些手段只能说防君子不防小人。
    leavic
        14
    leavic  
       2016-01-29 10:52:07 +08:00
    @fy pyc 和 py 几乎等效,毫无加密意义。 C 为什么要直接写数据进去?随便写个算法加密一下,逆向难度比 python 高多了。
    fy
        15
    fy  
       2016-01-29 13:21:34 +08:00
    @leavic 那我还可以抓包嘛,管你什么算法;而且你提交数据的时候总得拼装字符串吧,我直接在那边下断点难道拿不到数据?再说值得防贼一样防着?不如去写服务器包一层。

    就算写了服务,也不会天天去看“究竟是谁调用了我的服务?”“是不是在盗用?”
    leavic
        16
    leavic  
       2016-01-29 18:37:43 +08:00
    @fy 没有不可以破解的程序,只有过高的破解成本, pyc 的破解成本接近 0 ,而 C 要高得多。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2760 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:19 · PVG 17:19 · LAX 01:19 · JFK 04:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.