CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
数据存储

【数据存储】日志脱敏:敏感字段的存储规范

2026-09-21 09:42 作者:996 技术组 0 阅读 数据存储

实战应用:用在哪里

日志是排查问题的生命线,但日志里的手机号、支付单号、真实姓名如果明文存储,日志库本身就成为泄露源。日志脱敏的规范在写入时完成:敏感字段按类型掩码,查询的展示按权限二次脱敏。

脱敏的规则

lua

---敏感字段的掩码规则
local MASK_RULES = {
    phone = function(v) return string.sub(v, 1, 3) .. "****" .. string.sub(v, -4) end,
    name = function(v) return string.sub(v, 1, 1) .. string.rep("*", #v - 1) end,
    order = function(v) return string.sub(v, 1, 6) .. "****" end,
}
function LogWrite.masked(kind, fields)
    local masked = {}
    for k, v in pairs(fields) do
        local rule = MASK_RULES[k]
        masked[k] = rule and rule(v) or v
    end
    QF_AppendLog(kind, masked)
end

掩码的规则按字段类型定义:手机号保留前三后四、姓名保留首字、订单号保留前六位。掩码在写入时完成而不是查询时处理,泄露的面上就没有明文。脱敏的白名单:内部审计角色的查询走带权限的原始数据通道,权限的审计与日志同源。

查询的权限

lua

---查询的权限校验与二次脱敏
function LogQuery.search(operator, kind, key)
    if not LogQuery.hasPerm(operator, kind) then return nil, "无权限" end
    local rows = QF_SearchLog(kind, key)
    if not LogQuery.isAuditor(operator) then
        for _, r in ipairs(rows) do
            r.phone = MASK_RULES.phone(r.phone)
        end
    end
    return rows
end

查询的权限分级:普通客服看掩码数据,审计员看原始数据且每次查询留痕。脱敏的规则与权限的矩阵在配置表维护,规则的变化走审批。日志的保留期按类型分级:支付类日志保留三年、行为类一年、调试类 30 天,保留期的差异是合规与成本的平衡。

验证与监控

脱敏的覆盖率扫描:抽样日志的敏感字段明文检测,明文零容忍。

踩坑记录

掩码的规则曾经漏了 QQ 号字段,客服后台的 QQ 号明文可见,字段清单的全量扫描补上了漏网的字段。掩码的调用曾经依赖开发者自觉,日志写入的封装层强制脱敏后,漏掩码的问题从机制上根除。

上线要点

脱敏的规则进配置表,新字段的掩码规则登记即生效。日志的查询审计与权限的矩阵联动,每一次原始数据的查询都有操作人与事由。脱敏的验证用例进回归集,规则的回归在每次发版跑一遍,数据安全的底线靠用例守护。

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

网络通信行会集结

【网络通信】行会集结令:跨地图集结消息的链路设计

实战应用:用在哪里 沙巴克开战前600秒,行会会长一键集结,全会在线成员无论在哪张图都收到带坐标的集结消息,点击直达集合点。…

2026-09-22 15:09 996 技术组 · 0 阅读
运维发布压测预演

【运维发布】新玩法容量预演:远征副本上线的压测编排设计

实战应用:用在哪里 远征副本上线前夜,压测编排把“上线会不会崩”变成一场有脚本的预演:模拟满员远征、三选一齐选、奖励齐领三个…

2026-09-22 15:09 996 技术组 · 0 阅读
案例复盘结义Buff

【案例复盘】结义加成重复发放:协同Buff的重复结算复盘

实战应用:用在哪里 结义合击玩法上线三天,客服收到“攻击加成叠了三层”的报告:同一次合击,三个入口各挂了一次加成Buff。复…

2026-09-22 15:09 996 技术组 · 0 阅读
界面UI任务奖励预览

【界面UI】任务奖励预览:战力换算提示的界面设计

实战应用:用在哪里 “强化石×3”值不值得跑一趟毒蛇山谷,玩家心里没数。任务接取页的奖励预览把物品换算成战力参考值:每件物品…

2026-09-22 15:09 996 技术组 · 0 阅读
前端接口帮助检索

【前端接口】帮助中心自助查询:关键词检索与直达实现

实战应用:用在哪里 “转生怎么升”“红名怎么洗”这类问题八成答案都在帮助中心,玩家却习惯直接问客服。自助查询把帮助条目做成关…

2026-09-22 15:09 996 技术组 · 0 阅读
引擎触发战士攻击节奏

【引擎触发】烈火剑法前后摇:攻击节奏的触发调优设计

实战应用:用在哪里 烈火剑法的打击节奏由前摇与后摇决定:前摇太长玩家觉得迟钝,后摇太短连招没有张力。节奏调优把前后摇参数化:…

2026-09-22 15:09 996 技术组 · 0 阅读