feat(01-01): 新增 common/utils.py 含 mask_token 工具函数
- 落地 mask_token(token, visible_tail=4, mask_char='*') 通用脱敏函数 - 末 N 位明文保留;空/短输入兜底(短于 visible_tail 时全脱敏防长度泄露) - 不依赖 Django,纯 Python utility,供 Phase 1 Admin / Phase 3 日志 formatter 复用 - 覆盖需求 CRED-01 工具支撑部分
This commit is contained in:
parent
343b5d0fee
commit
a9c25eb2ac
32
qy_lty/common/utils.py
Normal file
32
qy_lty/common/utils.py
Normal file
@ -0,0 +1,32 @@
|
||||
"""通用工具函数集合。
|
||||
|
||||
注:common/ 不是 Django app(无 apps.py、未注册到 INSTALLED_APPS),
|
||||
仅作为跨 app 的纯函数 utility 命名空间使用。
|
||||
|
||||
不要在此放 Django Model / Manager / 任何依赖 app registry 的对象。
|
||||
"""
|
||||
|
||||
|
||||
def mask_token(token: str, visible_tail: int = 4, mask_char: str = '*') -> str:
|
||||
"""脱敏长 token / secret,仅保留末 N 位明文。
|
||||
|
||||
设计动机:CredentialSlot.access_token 在 Admin 列表 / 查看态需仅显示末 4 位;
|
||||
Phase 3 阿里云日志 formatter 也将复用本函数。
|
||||
|
||||
Args:
|
||||
token: 待脱敏字符串;空字符串 / None 直接返回 ''
|
||||
visible_tail: 末尾保留明文的字符数(默认 4)
|
||||
mask_char: 掩码字符(默认 *)
|
||||
|
||||
Returns:
|
||||
脱敏后的字符串。例:
|
||||
'sk-abcdef1234' -> '*********1234'
|
||||
'' -> ''
|
||||
None -> ''
|
||||
'abc' -> '***' # 短于 visible_tail 时全部脱敏,不暴露长度信号
|
||||
"""
|
||||
if not token:
|
||||
return ''
|
||||
if len(token) <= visible_tail:
|
||||
return mask_char * len(token)
|
||||
return mask_char * (len(token) - visible_tail) + token[-visible_tail:]
|
||||
Loading…
x
Reference in New Issue
Block a user