V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
t2doo
V2EX  ›  问与答

PHP 加密要怎么搞?

  •  
  •   t2doo · 2017-03-07 17:04:21 +08:00 · 4902 次点击
    这是一个创建于 2598 天前的主题,其中的信息可能已经有所发展或是发生改变。
    手头有个项目,对方出服务器,我的代码这下就彻底暴露了,想问下 PHP 加密什么方案好,让他们看到代码还得解密,麻烦老司机来指导一下,万分感谢!
    33 条回复    2021-12-09 11:53:07 +08:00
    isCyan
        1
    isCyan  
       2017-03-07 17:36:59 +08:00 via Android
    不会百度不会谷歌吗,现在 V 站帖子质量低到不行。
    popu111
        2
    popu111  
       2017-03-07 17:40:00 +08:00
    @isCyan 严重同意系列

    以及回复楼主:没救, PHP 常见加密在淘宝十块以内都能解决,而且你还完全在人家手上跑。。。
    helloccav
        3
    helloccav  
       2017-03-07 17:41:15 +08:00 via Android
    最简单的方法把函数名和变量,改成,没有意义的字符,增加别人修改的难度
    helloccav
        4
    helloccav  
       2017-03-07 17:42:33 +08:00 via Android
    @isCyan
    @popu111
    我觉得这个不能怪楼主,你们说搜索一下,但是现在现在网络上能搜索到的答案,加密都是不完美的,就像你们自己回答那样,很容易破解。所以来这里就是想问一下,有没有更加安全的加密方式。
    R18
        5
    R18  
       2017-03-07 17:43:57 +08:00 via Android
    一个项目只用一个 php 文件,搜索 a 可以出来几万匹配项
    explon
        6
    explon  
       2017-03-07 17:46:01 +08:00
    楼主估计以为大家写完代码都是要加密给别人用的
    saharabear
        7
    saharabear  
       2017-03-07 17:52:10 +08:00
    不熟悉私有 PHP 领域,见过两处方案:

    A :额外依赖,要想跑起 PHP ,需要加载一个.so 文件,这个文件是私有的,使用 C 语言编写,不知道具体是什么东西。没有这个东西,整个项目跑不起来,一部分业务与安全验证应该都在这个.so 里面。
    B :转译,最终形成了几个很难读懂的 PHP 文件,源代码依然是 PHP ,但是用了一个 shell 进行了这种转译,把 N 个 PHP 文件,压缩进几个无法读懂的 PHP 文件内,变量名全部转译成复杂的指令。

    以上两个项目都是别人的私有项目,我只是看到别人这么用过,具体原理及方案可行性,我没有太关注。
    HanSonJ
        8
    HanSonJ  
       2017-03-07 17:59:28 +08:00
    也许你要换个语言。
    t2doo
        9
    t2doo  
    OP
       2017-03-07 18:10:16 +08:00 via iPhone
    第一次考虑到加密,其实代码没啥东西,我就是有个数据库连接不想给人看到 Host 地址,回家仔细研究一下,感谢回复🙏
    torbrowserbridge
        10
    torbrowserbridge  
       2017-03-07 18:11:29 +08:00
    试试 Zend Guard
    xiaoyaoking
        11
    xiaoyaoking  
       2017-03-07 18:13:16 +08:00
    自己写扩展,核心代码用 c++ ,我个人是偷懒, 直接把 PHP 代码加密 然后 挂到扩展,最后拦截 PHP 文件名 解密 执行。。。
    torbrowserbridge
        12
    torbrowserbridge  
       2017-03-07 18:18:00 +08:00 via iPhone
    giuem
        13
    giuem  
       2017-03-07 18:20:05 +08:00 via iPhone
    docker
    rogerchen
        14
    rogerchen  
       2017-03-07 18:22:04 +08:00
    @torbrowserbridge 开眼界了。
    @t2doo 字符串是不能加密的。。。这是常识,可以考虑用混淆的方案,让人看到一堆乱码就没心情了。
    em70
        15
    em70  
       2017-03-07 18:22:50 +08:00 via Android
    不要对方服务器,把你的服务做成接口,按次收费或者包月。如果客户不买账,说明你的代码没那么高的价值,也不用纠结加密了
    torbrowserbridge
        16
    torbrowserbridge  
       2017-03-07 19:16:22 +08:00 via iPhone
    @giuem docker 怎么搞?不给别人 image 么?给了还是能访问啊
    Felldeadbird
        17
    Felldeadbird  
       2017-03-07 19:51:40 +08:00 via iPhone
    直接买现成的加密库
    fyibmsd
        18
    fyibmsd  
       2017-03-07 20:05:33 +08:00
    zephir ,把核心部分加密就行
    ooxxcc
        19
    ooxxcc  
       2017-03-07 20:10:11 +08:00
    封装成虚拟机镜像,磁盘加密,只暴露 80 端口
    shiji
        20
    shiji  
       2017-03-07 20:11:10 +08:00
    那核心用 Java 或者 C++之类的写,最外面套一层 php 。 php 收到请求过滤参数,然后传递参数通过 shell_exe 给你编译好的的 java 或者 C++程序
    giuem
        21
    giuem  
       2017-03-07 20:49:23 +08:00
    @torbrowserbridge 好吧,我忘了还能进容器看代码
    torbrowserbridge
        22
    torbrowserbridge  
       2017-03-07 22:01:16 +08:00 via iPhone
    @ooxxcc 真心不错的方案
    eecjimmy
        23
    eecjimmy  
       2017-03-07 22:07:11 +08:00 via iPhone
    加个扩展
    Citrus
        24
    Citrus  
       2017-03-07 23:10:55 +08:00 via iPhone
    @xiaoyaoking 你这样只要改一点点在解密之后把解密内容输出,就全破解了。。。建议不要这么偷懒。。。
    cxbig
        25
    cxbig  
       2017-03-08 00:29:24 +08:00
    不大现实, PHP 本就是挣快钱的,靠量取胜,想指着一个解决方案吃到底可能性不大
    如果对方不是那么的专业,做成 so 或者 phar 文件好了
    esile
        26
    esile  
       2017-03-08 04:09:09 +08:00 via iPhone
    混淆一下别人基本就懒得改了
    t2doo
        27
    t2doo  
    OP
       2017-03-08 06:19:36 +08:00   ❤️ 1
    https://github.com/del-xiong/screw-plus

    目前用的这个,主要是不想给人看到数据库地址
    kokutou
        28
    kokutou  
       2017-03-08 07:21:47 +08:00 via Android
    混淆。。
    yanw
        29
    yanw  
       2017-03-08 08:53:03 +08:00 via iPhone
    代码有多烂写多烂,烂到自己都不想维护
    thundernet8
        30
    thundernet8  
       2017-03-08 11:04:20 +08:00
    自从我上一个 wordpress 主题被破解搞得没收入,破解人还嚣张的在破解版本植入辱骂我的文字,我现在新主题改成动态 so 扩展加密了, https://webapproach.net/tint-authorization.html
    Geniusssssss
        31
    Geniusssssss  
       2017-03-08 11:40:57 +08:00
    还是建议开源精神 简单加密上面的诸位都阐述过了 复杂加密就动态获取 key 吧 将 php 代码写入.pak 然后加密 然后取 md5 传输服务器 服务器返回 key 使用 key 解密执行新加密写入然后再执行 php 内容
    当然 这只是增加解密难度 并不会导致不被破解 其实并不存在什么不能被破解的东西 只是看破解人的耐心与技术 记得那个正真用到的 pak 文件也要使用混合加密让它的变量参数什么的看着都是 OO000Oo 这样的
    ningcool
        32
    ningcool  
       2017-03-08 17:35:04 +08:00
    建议隐私逻辑写到自己的服务器,客户端的向你的服务器接口获取 你的“核心逻辑运算的结果”。
    skyworker
        33
    skyworker  
       2021-12-09 11:53:07 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4770 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 05:36 · PVG 13:36 · LAX 22:36 · JFK 01:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.