sublime text批量脱敏不能用alt+f3,因其无上下文全词匹配会误伤注释、变量名及含下划线或$符号的字段;必须用正则预筛(如(api_key|secret)s[:=]s["'](1)["'])、ctrl+d增量选择、where限定范围(如config//.yaml)并人工校验,且“加盐”须由运行时完成,编辑器仅作占位符替换。"' ↩

Sublime Text 没有“宏指令”这个安全抽象层,所有所谓“加盐脱敏”的批量操作,本质是正则文本替换 + 人工语义校验——盐值不能由编辑器生成,更不能用 Ctrl+D 或 Alt+F3 直接套用;否则极易把 "password": "123" 和 // salt: abc123 一起抹掉。
为什么不能用 Alt+F3 做字段脱敏
Alt+F3 是无上下文全文件单词匹配,对配置字段极不友好:
- 匹配
secret_key时,会同时命中SECRET_KEY = "xxx"、"secret_key": "xxx"、# deprecated secret_key和new_secret_key(因默认 word boundary 不识别下划线) - 若字段含
$(如$salt),Alt+F3把$当行尾锚点,直接漏匹配 - 无法区分明文字段与注释/日志模板/测试用例中的假数据
真正可控的脱敏流程:Ctrl+D + 正则预筛 + 手动确认
必须分三步走,缺一不可:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 先用正则查找框填
(api_key|secret|token|password)s*[:=]s*["']([^"']*)["'],勾选.*(正则模式)和Aa(区分大小写),预览所有疑似明文位置 - 逐个双击匹配项,按
Ctrl+D增量选中——看到// TODO: remove before prod这类干扰行,立刻按Ctrl+U撤回 - 确认光标全部落在真实赋值语句上后,输入
"REDACTED"或"${SALT_PREFIX}_sha256"(注意:此处SALT_PREFIX必须提前在环境里定义好,Sublime 不执行变量插值)
下划线字段(如 db_password)怎么精准匹配
Sublime 默认把 _ 当词边界,db_password 双击只选中 db。解决方法只有两个:
- 临时改设置:打开
Preferences → Settings – User,删掉"word_separators": "./\()"'-:,.;~!@#$%^&*|+=[]{}`~?"中的_(改完重启) - 或直接用正则强制锚定:
db_password,比db_password纯文本搜可靠得多 - 如果字段名含
$(如$encryption_salt),查找必须写成$encryption_salt,否则$被当正则行尾符
项目级批量脱敏必须用 Ctrl+Shift+H + Where 范围限定
跨几十个配置文件时,Ctrl+D 无效,必须用全局替换但严防误伤:
- 先确保已通过
Project → Add Folder to Project…加入根目录,并保存项目(否则Where范围失效) -
Where框填config/**/*.yaml,config/**/*.json,!*.bak,明确排除备份文件和非配置路径 - 查找填
("?)(api_key|secret|password)\s*[:=]\s*["']([^"']*)["'],替换为$1$2: "REDACTED"(保留引号和键名格式) - 务必点
Find All预览结果——尤其检查是否误改了"default_password": "test"这类测试值
真正的“加盐”动作不在编辑器里发生,它必须由运行时代码完成;Sublime 做的只是把明文占位符替换成可被安全函数识别的标记(如 "password": "${SALT_HASH}")。任何试图让 Sublime 自动生成加密哈希或拼接随机盐值的操作,都是在绕过密码学基本约束——编辑器不是 crypto runtime。










