建议将正版验证改为基于皮肤的方式
我不认为直接向第三方授予登录账号的权力是合适且尊重用户隐私的方案, 由此提出一种以玩家皮肤作为载体的验证方式+------------------------------------------------------------------------------+
| |
| mcbbs.co User Minecraft |
| | | | |
| | | | |
| | User Name | | |
| |<---------------------+ | |
| | | | |
| Encode | Skin with Load | | |
| +--------------------->| | |
| | | | |
| | | Set Skin | |
| | +------------------------->| |
| | | | |
| | OK | | |
| |<---------------------+ | |
| | | | |
| | Fetch Skin | | |
| +----------------------+------------------------->| |
| | | | |
| | Skin with load | | |
| |<---------------------+--------------------------+ |
| | | | |
| | | | |
| Decode | | | |
| & | | | |
| Verify | | | |
| | | | |
| | | | |
| | | | |
| v v v |
| |
+------------------------------------------------------------------------------+
此处的负载可以是一个有时间限制的验证码, 也可以是基于硬编码在插件代码中的非对称加密密钥对, 通过签名玩家名称+时间戳+填充内容, 或者是JWT
一个4096位的密钥输出是4096位, 这对于无损的64*64 rgba来说是完全放得下的
我没有了解过论坛的实现, 但是似乎对于RSA加解密php提供了原生实现 Encrypt and Decrypt text with RSA in PHP
这个方案逻辑简单, 不需要数据储存, 而且提供了更高的隐私
逻辑是不是真的简单我不知道,但是用户体验真的屌差
以及,你是不是忘了 Mojang 的 CDN 缓存 SSSSSteven 发表于 2025-12-1 11:06
逻辑是不是真的简单我不知道,但是用户体验真的屌差
以及,你是不是忘了 Mojang 的 CDN 缓存 ...
首先, 我们只需要让玩家保存一张图片, 然后弹一个链接到minecraft.net, 或者他们爱用什么启动器用什么启动器,这个体验很差吗?
其次, 我重设皮肤之后马上进入服务器, 皮肤已经更新了, 这是否能证明我们可以忽略 CDN 的影响? WisW 发表于 2025-12-1 19:13
首先, 我们只需要让玩家保存一张图片, 然后弹一个链接到minecraft.net, 或者他们爱用什么启动器用什么启 ...
听起来简单,但是实际操作上要打开四个网页点击十次鼠标,还要涉及到一次文件下载和一次文件上传,没有五分钟根本搞不定
而且完成验证之后用户还要把自己原先皮肤换回来,这就又涉及到了至少两次鼠标点击和一次文件上传,如果用户没有保存自己原先的皮肤,那他就换不回来了,这样还可能打击用户进行正版验证的积极性 1. 玩家未必想换皮肤
2. 纪念版通过OAuth获取的信息似乎只可读不可写,隐私问题不严重
至于数据储存,纪念版的活跃用户基数不大,由于正版验证产生的空间成本可忽略不计。 WisW 发表于 2025-12-1 19:13
首先, 我们只需要让玩家保存一张图片, 然后弹一个链接到minecraft.net, 或者他们爱用什么启动器用什么启 ...
可以说明你的CDN缓存周期比较短,或者你的运气比较好。 teddyxlandlee 发表于 2025-12-1 23:42
1. 玩家未必想换皮肤
2. 纪念版通过OAuth获取的信息似乎只可读不可写,隐私问题不严重
至于数据储存,纪念 ...
1. 提供两种方案给玩家并注明优缺点,oauth不符合最小权限原则,皮肤不方便而且可能造成皮肤永久丢失,可能不稳定,代码我来写
2. 先不提它对于xbox有多少操作权限,纪念版的机制可以获取一个有效期一天的token,可以用于登陆任意没有其他验证的正版mc服务器
3. 我认为mojang的网络被设计成皮肤更改立即呈现,我这件事情干过很多次了,我甚至写过一个程序在hypixel密室杀手频繁更改皮肤来减弱其他玩家对于我皮肤和用户名的关联度,从而减少暴露概率,每次这个至少我本地看到的都生效,我认为mojang没有理由设计一个去中心化的架构,这个更改应该是统一的,同时我昨天分析了一下mojang的皮肤获取,首先通过玩家uuid请求一个包含总体外观的端点(https://sessionserver.mojang.com/session/minecraft/profile/),这里面包含了请求皮肤和披风的url等,我更改之后某个相应头由tcp hit变为了tcp miss,由此可见这个端点可以说几乎没有缓存,而皮肤特定的textures.minecraft.net的缓存与这个无关因为路径本身就是不同的
页:
[1]