PHP域名授权系统完整方案:无感自动激活、客户自助改域名、升级权限管控

运维开发 2026-10-29 23:39:27 浏览 次

PHP域名授权系统完整方案:无感自动激活、客户自助改域名、升级权限管控

一、方案概述

这套授权系统面向PHP程序产品,主打无感激活、离线可用、客户自助管理、精细化升级权限控制,兼顾客户使用体验和作者管控能力,适合商业源码、SAAS类程序做域名授权。

核心设计思路:网站日常运行依靠本地签名凭证离线校验,授权服务器故障不影响客户业务;联网动作只集中在激活、刷新授权、版本查询、升级这几个环节,同时把升级权限单独隔离,做到“能看更新日志,无授权账号则不能升级”。

整套能力清单:

  1. 无感安装激活:客户上传源码,访问安装页面自动识别域名与服务器特征,不需要手动填写授权码、账号,预授权域名直接完成激活;

  2. 离线运行:激活成功生成带HMAC签名的本地授权文件license.dat,网站访问只校验本地凭证,断网、授权服务器宕机都不影响网站正常使用;

  3. 客户自助授权后台:分配独立账号密码,客户自行修改绑定域名,支持配置域名修改周期上限,防止倒卖、转租授权;

  4. 独立刷新授权:客户在授权后台修改域名后,不会立刻生效,需要到自己网站后台手动【刷新授权】拉取新凭证;

  5. 更新分层管控:检测更新、查看版本号和更新说明无需登录;点击【确认升级】时,才校验授权账号凭证,没有有效登录凭证禁止升级。

二、整体业务流程

1. 管理员前置操作

管理员在授权管理后台预先录入客户域名,生成客户专属登录账号与密码,设置授权到期时间、域名修改次数、账号状态(正常/拉黑)。域名录入后处于预授权状态,等待客户激活。

2. 客户无感激活流程

客户将程序上传到服务器,访问安装页面install.php:

  1. 程序自动抓取当前访问域名、服务器IP、机器特征码,组合生成机器码machine_code;

  2. 自动携带域名、机器码、时间戳、HMAC签名请求授权服务器激活接口;

  3. 授权服务器校验:查询数据库是否存在该预授权域名、账号未拉黑、未过期;

  4. 校验通过:服务端生成带签名的授权数据包下发,程序自动写入本地 license.dat;

  5. 激活完成,无任何输入表单,全程无感。

    若域名未预授权、账号被禁用、已过期,直接返回激活失败提示。

3. 网站日常访问校验(离线)

客户网站每次运行,读取本地 license.dat:

  1. 校验HMAC签名,防止篡改授权文件;

  2. 校验当前访问域名、机器码、授权有效期;

  3. 全部校验通过,网站正常运行;全程不请求授权服务器,支持离线使用。

4. 客户自助修改域名

  1. 客户登录独立授权自助后台(账号密码由管理员下发);

  2. 页面展示当前绑定域名、到期时间、本月剩余域名修改次数;

  3. 提交新域名,系统校验域名格式、周期修改次数;

  4. 校验成功,修改数据库内绑定域名记录;

  5. 提示客户:域名修改成功,需要到网站后台点击【刷新授权】才会生效。

    仅修改数据库记录,不会自动同步客户网站本地授权文件,保证网站不会突然失效。

5. 刷新授权(同步域名)

客户在网站后台点击【刷新授权】:

  1. 读取本地license内的aid、域名、机器码;

  2. 联网请求授权服务器,拉取数据库里最新绑定域名;

  3. 校验账号状态合法后,下发全新授权包,覆盖本地license.dat;

    PHP域名授权系统完整方案无感自动激活客户自助
  4. 本地校验域名更新为新域名,完成域名切换。

    刷新授权和升级登录凭证相互独立,互不干扰。

6. 更新与升级分层权限逻辑(重点)

采用两套接口分离设计,实现“可看更新、升级受控”:

  1. 版本查询接口(无需登录Token)客户后台点击【检测更新】,自动携带license内aid、域名、机器码+签名请求接口。 仅校验账号是否正常、未过期,返回版本号、发布时间、更新日志。 👉 效果:所有客户都能正常看到新版本和更新说明,提升体验。

  2. 升级执行接口(必须登录校验)客户看完更新日志,点击弹窗里【确认升级】:

  • 本地不存在 update_token.dat 或者token过期:弹出账号密码登录窗口;

  • 存在有效token:携带token、aid、域名、机器码请求升级接口;

  • 授权服务器校验token合法性、绑定的域名/机器码、账号状态;

  • 校验通过,返回加密升级包地址、解密密钥,开始执行升级;校验失败拒绝升级。

  1. 登录流程 客户输入授权账号密码提交登录,授权服务器验证账号密码,下发30天有效期的update_token,存入本地 update_token.dat。登录成功后自动继续执行升级流程。

    管理员拉黑账号、修改客户密码时,一键清空该账号下全部token,下次升级必须重新登录。

三、核心安全设计

  1. HMAC-SHA256全局签名所有接口传输数据都附带签名,服务端校验签名,防止参数篡改、抓包重放激活请求;客户端与授权服务器使用同一套保密通信密钥。

  2. 机器码绑定激活时生成机器码,和域名、账号绑定。即使域名是预授权域名,换到别的服务器也无法激活,有效防止域名被盗刷盗用。

  3. HTTP_HOST风险防护Host请求头存在伪造风险,依靠机器码绑定做二次限制;可额外开启DNS解析IP比对(CDN场景慎用)。

  4. 文件访问保护license.dat、update_token.dat 放在data目录,配置Nginx/Apache禁止外部直接访问,防止凭证泄露。

  5. 域名修改次数风控限制周期内域名修改次数(例如每月2次),避免客户购买一份授权,频繁更换域名转租倒卖。

  6. 升级包安全升级包建议加密,下载地址做短时一次性有效,不提供永久公开下载链接。

  7. 日志留存授权服务器记录激活日志、域名修改日志、token登录日志、升级日志,方便排查盗用、纠纷追溯。

四、数据库核心表设计

  1. domain_auth(授权主表,管理员维护、客户自助修改域名)

    字段说明
    id主键aid,唯一授权ID
    domain当前绑定域名
    account客户登录账号
    passwordbcrypt加密密码,禁止明文存储
    expire_time到期时间戳,0代表永久授权
    status1正常,0拉黑禁用
    max_change周期最大域名修改次数
    cycle_sec修改周期,默认30天
    change_count本周期已修改域名次数
    reset_time次数重置时间
    last_machine_code上次激活服务器机器码
    addtime创建时间
  2. auth_token(升级登录令牌表)

    字段说明
    id主键
    aid关联授权ID
    token升级登录令牌
    machine_code绑定服务器机器码
    domain绑定域名
    expire_time令牌过期时间
    create_at令牌生成时间

五、方案优势总结

✅ 体验友好:无感激活,客户不用复制授权码;能预览更新日志,不会给客户造成“看不到更新”的困惑; ✅ 稳定性强:核心业务离线运行,授权服务器故障不影响线上网站; ✅ 管控灵活:客户自助改域名,减轻管理员工作量,同时次数限制规避倒卖风险; ✅ 权限精细:区分“查看更新”和“执行升级”,只在升级动作上做账号鉴权; ✅ 安全可靠:签名校验、机器绑定、token时效、密码加密多层防护,降低盗用风险。

六、适用场景

适合PHP开发的商业程序、企业管理系统、CMS、插件、源码产品做域名授权售卖;适合不想给客户分发授权码、希望简化客户部署流程,同时严格管控升级权限的产品。


本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐