Lunar Tear 安全设计清单:Admin Webhook、Bearer Token 与 fail-closed 机制详解
【免费下载链接】lunar-tearPrivate server research project for a certain discontinued mobile game项目地址https://gitcode.com/gh_mirrors/lu/lunar-tear点击查看免费下载Lunar Tear 是一个针对已停服手游的私服研究项目由 gRPC 游戏服、HTTP 资源 CDN、auth-server 登录服务和 Admin Webhook 四部分组成。本文带你快速看懂它的完整安全设计Admin Webhook 如何受 Bearer Token 保护、客户端登录 Token 采用什么签名方案以及 fail-closed默认关闭机制如何保证未配置就绝不暴露。项目架构速览四服务各司其职Lunar Tear 的每个服务都只开放必要的端口管理端点更是被单独隔离服务二进制端口职责游戏服lunar-tear8003gRPC 主服务客户端登录、抽卡、任务等资源 CDNocto-cdn8080资产包、master data、list.bin 下发登录服务auth-server3000账号注册与登录签发 TokenAdmin Webhooklunar-tear8082热重载 master data默认仅回环服务入口见 server/cmd/lunar-tear/main.goAdmin Webhook 监听地址的默认值就写在命令行参数里——127.0.0.1:8082只允许本机访问main.go。Admin Webhook如何安全地不重启热更新私服运营者常需要修改游戏内数据即 master data 文件assets/release/20240404193219.bin.e。Lunar Tear 提供一个管理端点POST /api/admin/master-data/reload让服务器在不重启的情况下重新读取该文件原子替换全部内存目录并让在线客户端自动拉取新版数据。它的实现非常克制整个逻辑只有几十行位于 server/cmd/lunar-tear/admin.go。触发方式一条带 Bearer Token 的请求在环境变量中设置LUNAR_ADMIN_TOKEN后用如下命令即可触发热重载curl -X POST -H Authorization: Bearer ${LUNAR_ADMIN_TOKEN} \ http://127.0.0.1:8082/api/admin/master-data/reload热重载由 server/internal/runtime/holder.go 中的Holder完成每次重新加载都会从头构建一份全新的Catalogs快照再通过原子指针一次性发布所有 gRPC 请求在开始时调用Get()因此永远看到一致的数据。Bearer Token 认证的两层设计Lunar Tear 中有两类 Bearer Token分别保护管理面和客户端面。管理端LUNAR_ADMIN_TOKEN 与恒定时间比较Admin Webhook 的鉴权逻辑在 admin.go只接受POST其他方法直接返回405请求头必须是Authorization: Bearer token比较使用subtle.ConstantTimeCompare第 36 行这是防计时侧信道攻击的标准做法——普通字符串比较会在第一个不匹配字节处提前返回攻击者可据此逐字节猜测 Token而恒定时间比较消除了这种信息泄露校验失败统一返回401 unauthorized不泄露Token 是空、是格式错还是不匹配等细节。客户端auth-server 签发的 HMAC-SHA256 Token客户端的Facebook 登录按钮实际被重定向到 auth-server输入用户名/密码后签发一个自定义格式 TokenBase64URL(payload).Base64URL(HMAC-SHA256签名)其中 payload 包含sub用户 ID、name、iat签发时间、exp过期时间有效期固定 24 小时见 server/internal/auth/token.go。验证流程在 Validate 函数 中按顺序执行格式拆分 → Base64 解码 →hmac.Equal恒定时间校验签名 → 解析声明 → 检查过期任何一步失败都拒绝ErrTokenInvalid/ErrTokenExpired。游戏服通过 auth-server 的/me端点换取用户身份该端点同时兼容access_token查询参数与Authorization: Bearer头两种传法handlers.go。密钥管理也很讲究--secret省略时auth-server 启动时用密码学安全随机数生成 32 字节密钥并打印到控制台提示你在下次重启时通过--secret复用保证已有 Token 不过期失效server/cmd/auth-server/main.go。fail-closed未配置就绝不监听fail-closed 的核心思想是出问题时宁可不可用也绝不暴露。Lunar Tear 在 Admin Webhook 上贯彻了这一点admin.go 的注释与代码明确写道如果LUNAR_ADMIN_TOKEN未设置或为空监听器根本不会绑定——新部署永远不会暴露一个未认证的端点。三层防线叠加无 Token 无端口环境变量未设置时8082 端口上什么都没有连扫描器都找不到端点️默认回环--admin-listen默认127.0.0.1:8082只有运维者显式改成0.0.0.0才会对外暴露⏱️恒定时间比较即使端口暴露Token 猜测也无法利用响应时间差异。Docker 部署同样延续此默认compose 文件将容器内0.0.0.0:8082仅映射到宿主机的127.0.0.1:8082且LUNAR_ADMIN_TOKEN从.env注入server/docker-compose.yaml。其他值得学习的安全细节 bcrypt 存储密码注册时密码经bcrypt.GenerateFromPassword加盐哈希后入库绝不存明文server/internal/auth/store.go统一错误文案登录失败一律返回 Invalid username or password.避免暴露该用户不存在防止账号枚举handlers.go注册开关--no-register开放运营前可关闭自助注册改用 server/cmd/register-account/ 工具受控建号实现白名单式开服模板自动转义登录页与 OAuth 重定向页均使用 Gohtml/template自动防止 XSShandlers.go。部署检查清单 ✅#检查项预期状态1LUNAR_ADMIN_TOKEN是否已设置未设置时 8082 端口不监听fail-closed2--admin-listen绑定地址默认127.0.0.1:8082公网部署勿改0.0.0.03auth-server 的--secret重启时复用同一密钥否则存量 Token 全部失效4注册策略稳定运营期建议开启--no-register5Token 有效期客户端 Token 24 小时到期需重新登录更多端口、环境变量与命令行参数的完整对照可查阅 README.md 的 Live Master Data Reload 一节。小结Lunar Tear 的安全设计体现了一套清晰的原则——最小暴露无 Token 不监听、默认回环、强认证HMAC 签名 恒定时间比较、弱默认注册可一键关闭。这些模式对任何需要暴露管理端点的自建服务项目都值得借鉴。赞分享【免费下载链接】lunar-tearPrivate server research project for a certain discontinued mobile game项目地址https://gitcode.com/gh_mirrors/lu/lunar-tear点击查看免费下载相关推荐如何免费解锁 WeMod 专业版Wand-Enhancer 本地补丁与手机远程面板实操如何免费解锁 WeMod 专业版Wand Enhancer 本地补丁与手机远程面板实操 Wand Enhancer 是完全开源的本地补丁工具扫描本机 WeM桌面应用前端gsd-core Worktree 清理安全加固基于 per-wave Manifest 的失败关闭fail-closed机制解析gsd core Worktree 清理安全加固基于 per wave Manifest 的失败关闭fail closed机制解析 导读 本文聚焦 GSDAOS Capsule 安全设计详解信任边界、边缘校验、Fail-Closed 语义、资源限制与对抗式评审AOS Capsule 安全设计详解信任边界、边缘校验、Fail Closed 语义、资源限制与对抗式评审 本文以 AOS Community Edition创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

使用poi-tl实现Word复杂嵌套列表动态生成方案

使用poi-tl实现Word复杂嵌套列表动态生成方案

1. 项目背景与核心挑战最近在开发一个企业级报表导出系统时,遇到了一个棘手的问题:需要动态生成包含多层嵌套列表的Word文档。这类需求在OA系统、合同管理系统、招投标文档生成等场景中非常常见。传统的Apache POI操作起来异常繁琐,而市面上常…

2026/10/15 11:10:27 阅读更多 →
Wan2.1视频生成模型实战:单流DiT与Flow Matching架构解析

Wan2.1视频生成模型实战:单流DiT与Flow Matching架构解析

1. 从标题到本质:Wan2.1到底在解决什么问题 第一次看到“Wan2.1”这个名字,很多人会以为这只是某个开源视频生成模型的版本号迭代。但如果你真正跑过几轮推理、对比过它和同级别方案的显存占用与生成质量,就会发现这个版本的核心价值远不止“…

2026/10/15 11:10:27 阅读更多 →
TypeScript类型守卫:告别as强转的安全实践

TypeScript类型守卫:告别as强转的安全实践

## 1. 为什么我们需要告别 as 强转在TypeScript项目中,as类型断言就像是一把双刃剑。新手开发者常常把它当作救命稻草——当类型报错时,一个as any就能让编译器闭嘴。但五年TS开发经验告诉我,这种简单粗暴的方式会埋下巨大的隐患。去年我接手…

2026/10/15 11:09:24 阅读更多 →

最新新闻

Vue+ThinkPHP-Laravel构建二手车交易平台实战

Vue+ThinkPHP-Laravel构建二手车交易平台实战

1. 项目背景与核心价值 二手汽车交易市场近年来呈现爆发式增长态势,但传统线下交易模式存在信息不对称、交易流程繁琐、信任成本高等痛点。基于VueThinkPHP-Laravel的混合架构方案,恰好能解决行业数字化转型中的三个关键问题: 前端体验优化 …

2026/10/15 12:38:06 阅读更多 →
双端队列deque全解:从底层原理到单调队列与竞赛应用

双端队列deque全解:从底层原理到单调队列与竞赛应用

做算法题的人大概都经历过这样的场景:一道滑动窗口最大值的题,第一反应是priority_queue,塞进去跑一遍O(n log n)也AC了,但看着题解区那个O(n)的写法总觉得自己绕了远路。再过一阵子遇到DP优化,状态转移里带着一个&quo…

2026/10/15 12:38:06 阅读更多 →
【OpenClaw 本地实战 Ep.1】抛弃 Ollama?转向 LM Studio!Windows 下用 NVIDIA 显卡搭建 OpenClaw 本地极速推理服务

【OpenClaw 本地实战 Ep.1】抛弃 Ollama?转向 LM Studio!Windows 下用 NVIDIA 显卡搭建 OpenClaw 本地极速推理服务

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 12:38:06 阅读更多 →
八数码问题C语言BFS实现:从伪广搜到工业级最短路径求解

八数码问题C语言BFS实现:从伪广搜到工业级最短路径求解

简介:本资源是一份面向计算机专业本科生与算法初学者的八数码问题求解实践材料,聚焦宽度优先搜索(BFS)思想在经典状态空间搜索问题中的C语言实现。资源以详实的DOC文档形式呈现,完整包含算法原理剖析、结构体设计逻辑、…

2026/10/15 12:38:06 阅读更多 →
OV7670+SDRAM+VGA:FPGA实时图像链路设计与避坑指南

OV7670+SDRAM+VGA:FPGA实时图像链路设计与避坑指南

简介:这是一套面向FPGA与数字图像处理学习者的完整工程实践资料,围绕OV7670 CMOS摄像头、SDRAM缓存与VGA显示构建实时视频采集与显示链路,并集成中值滤波算法改善画质。项目覆盖IIC寄存器配置、SDRAM控制器读写、VGA时序驱动以及灰度图像去噪…

2026/10/15 12:38:06 阅读更多 →
从8k到1M上下文的通用化:利用Qwen-Agent的创新实践

从8k到1M上下文的通用化:利用Qwen-Agent的创新实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 12:37:05 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →