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
-
.format_value(key, value) ⇒ Object
按 key 是否敏感,决定原样返回还是脱敏返回.
- .mask(value) ⇒ Object
- .sensitive_key?(key) ⇒ Boolean
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
18 19 20 |
# File 'lib/easyai/base/secret_masker.rb', line 18 def sensitive_key?(key) SENSITIVE_KEY_PATTERN.match?(key.to_s) end |