Module: EasyAI::Base::SecretMasker

Defined in:
lib/easyai/base/secret_masker.rb

Overview

敏感字段脱敏工具。

凡是 key 名包含 TOKEN / KEY / SECRET / PASSWORD(大小写不敏感)的环境变量,在向 stdout 打印时都应通过本模块脱敏,避免 API Key 明文出现在终端历史 / 截图 / 日志。

脱敏规则:

- 长度 ≤ 8:完全隐藏,仅保留长度
- 长度 > 8:前 4 + "..." + 后 4 + 长度

Constant Summary collapse

SENSITIVE_KEY_PATTERN =
/(TOKEN|KEY|SECRET|PASSWORD)/i.freeze

Class Method Summary collapse

Class Method Details

.format_value(key, value) ⇒ Object

按 key 是否敏感,决定原样返回还是脱敏返回



31
32
33
34
35
36
# File 'lib/easyai/base/secret_masker.rb', line 31

def format_value(key, value)
  return value.to_s unless value.is_a?(String)
  return value unless sensitive_key?(key)

  mask(value)
end

.mask(value) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/easyai/base/secret_masker.rb', line 22

def mask(value)
  s = value.to_s
  len = s.length
  return "*** (len=#{len})" if len <= 8

  "#{s[0, 4]}...#{s[-4, 4]} (len=#{len})"
end

.sensitive_key?(key) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/easyai/base/secret_masker.rb', line 18

def sensitive_key?(key)
  SENSITIVE_KEY_PATTERN.match?(key.to_s)
end