请教一个连AI也不能帮我的问题,关于源码产品授权的逻辑

我使用 laravel 全家桶开发了一个产品,叫A。没有使用前后端分离。

这个产品是开源的,也就是说代码无加密。但是收费的。

产品提供给那些付费付费购买过的客户,在自己的服务器上进行私有部署。

每次产品更新的时候,我需要让客户服务器上的站点,可以自己进行手动点击按钮进行升级。

升级的逻辑没问题了。但是现在卡在,更新鉴权这一步了。

怎么鉴权?

我的需求是:需要通过授权网址和服务器IP进行更新判断。

客户部署的站点,通过laravel 发送请求的。

Http::post('http://scrm.test/api/xxxx'); 

麻烦事:

1,由于前后端不分离,在服务端与服务端的请求中,这些头信息不会自动生成。所以referer和origin这些头信息是不存在的。拿不到。

2,即使让客户在发送请求的时候,携带网址这个参数,但因为代码是开源的,这个参数可以被人为修改。

所以请教一下大家,应该怎么进行鉴权呢?

我的需求

1,盗版即使修改请求参数,比如手动在代码中修改请求时候的域名和 ip,也无效。
2,即使被盗版,我也能通过请求数据,能方便的查出来盗版源,或者盗版安装域名。
3,完全防盗不可能。只是尽可能在技术层面做一些限制。让盗版不方便。最终即使被盗版,也能追溯和定位。
4,不想做前后端分离。

乌鸦嘴新手社区 wyz.xyz 为技术新手提供服务
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

请求的ip是无法伪造的。

请求带上授权域名、授权号。 授权域名+ip+授权号不匹配直接报错就行了啊。服务器IP哪里有天天变的。

4天前 评论
shebaoting (楼主) 4天前
轻语过往 4天前
shebaoting (楼主) 4天前
讨论数量: 24

请求的ip是无法伪造的。

请求带上授权域名、授权号。 授权域名+ip+授权号不匹配直接报错就行了啊。服务器IP哪里有天天变的。

4天前 评论
shebaoting (楼主) 4天前
轻语过往 4天前
shebaoting (楼主) 4天前

客户增加秘钥,每个客户不同,请求和响应都使用秘钥加密,这样就能避免客户修改请求和参数,同时可以再关键领域代码加密,无法修改核心代码,缺失核心代码确保无法使用~

4天前 评论
shebaoting (楼主) 4天前
Imuyu (作者) 4天前
shebaoting (楼主) 4天前
滚球兽进化 4天前
Imuyu (作者) 4天前
Coolr 4天前
shebaoting (楼主) 4天前
sanders

搭个 docker 镜像仓库,卖账号给他们,每个人一个镜像,代码做加密,在中间件里判断域名。

4天前 评论
shebaoting (楼主) 4天前

鉴权可以套用微信公众号用户信息的解密,部署的时候客户那边发一个私钥加密请求,然后你解密内容之后,再和你更新授权服务数据库中记录的客户数据匹配再返回

4天前 评论

域名授权,启动代码加密校验域名,貌似那种cms就是这样做的收集数据

4天前 评论

我有一个不成熟的想法,就是做一个授权码,只能用一次,用的时候会返回一个新的授权码,授权码生成时带上此次更新的版本信息然后加密,如果有人要更新的时候授权码解密后版本信息不等于当前版本信息不允许更新

4天前 评论

可不可以讲一讲伪造ip的思路,或者你获取对方ip的代码,我想学习一下

4天前 评论
xiaochong0302

你给源码就一切都白给,但也不是无解。给你一个参考思路,我们的产品酷瓜云课堂,有开源版也有企业版(业务代码都没有做任何加密),我们也是基于域名或者IP授权的(可以按时间,也可以按注册人数),我们使用的是Phalcon框架(C扩展框架),我们对框架做了一些改造,把授权校验加进去了,你可以往这个方向上想想办法(写一个PHP扩展,让业务依赖这个扩展,把授权放校验进去)。

4天前 评论
shebaoting (楼主) 4天前
陈先生

一般来说,我会把核心组件做成 composer 的包,使用 Provider 来完成验证授权的行为。

4天前 评论

ip伪造成本不高,通过ip无法完全限制,你可以多加些条件。有种情况是以购买正版软件的服务器当代理,可以绕过大部分限制。目前常用解决方案:1、是加APPID和APPKEY,

2天前 评论
zzzzzq (作者) 2天前

细说升级是怎么做的; :joy:

2天前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!