信用卡字段管理 - 安全存储银行卡信息
为什么信用卡需要特殊对待
信用卡是高价值、低风险容忍的凭证类型:
- 泄露后攻击者可以直接消费
- 有 CVV 码和有效期等额外字段
- 持卡人姓名、账单地址等也是敏感信息
所以信用卡条目应该:
- 放在最高安全等级的数据库里(如果用多数据库策略)
- 所有非公共字段都标为保护字段
- 条目模板化,保证结构一致
推荐的信用卡条目结构
| 字段类型 | 字段名 | 是否保护 | 说明 |
|---|---|---|---|
| 标题 | 银行 + 卡种 | 否 | 如"招商银行 Visa" |
| 用户名 | 卡号 | 是 | 全部 16-19 位数字 |
| 密码 | PIN 码 | 是 | 6 位 ATM PIN |
| 自定义字段 | CVV2 | 是 | 卡背面 3 位 |
| 自定义字段 | 有效期 | 是 | MM/YY 格式 |
| 自定义字段 | 持卡人 | 否 | 持卡人姓名(和卡上一致) |
| 自定义字段 | 账单地址 | 是 | 信用卡账单地址 |
| 自定义字段 | 银行客服 | 否 | 丢失卡片挂失电话 |
| 自定义字段 | 网银登录 | 是 | 对应银行网银用户名 |
| 附件 | 正面扫描图 | 是 | 可选,注意风险 |
Magikeyboard 与信用卡
Magikeyboard 对信用卡的填充特别方便:
- 填卡号时:选卡号字段 → 输入框自动填入
- 填 CVV 时:切 Magikeyboard → 选 CVV 字段 → 填入
- 填有效期时:同理
但要注意:很多网银和支付 App 对信用卡卡号有反自动填充保护——此时只能靠 Magikeyboard 手动切换填充。
自动填充
Android 12+ 的自动填充框架可以识别"信用卡"类型的表单:
- 当你在支持的支付页面点输入框时,自动填充面板会识别这是信用卡表单
- 如果 KeePassDX 条目里的自定义字段名称符合 Android Pay 的标准命名,自动填充会更精确
- 但大多数国产支付 App 不支持自动填充的信用卡类型识别,Magikeyboard 更靠谱
安全建议
卡号字段保护
卡号通常设为"用户名"字段(因为长度适合),标为保护字段。但 Magikeyboard 不显示完整卡号,只显示条目标题——这是为了防止卡号在输入框上方暴露。
CVV 特殊处理
CVV 是"一次性"信息——它只用于无卡支付(电话、网络),不在刷卡时用到。建议:
- 不要在 KeePassDX 里存真实 CVV——凭记忆或写在安全的物理介质上
- 或者存了但每次用完都手动删除
存 CVV 确实方便,但一旦数据库泄露,攻击者拿到卡号+CVV 就能无卡消费。这是个便利性 vs 安全性的取舍。
附件扫描图
信用卡正反面扫描图作为附件存储风险很高:
- 图片里包含完整卡号、姓名、CVV
- KeePassDX 的加密存储是安全的,但设备丢失时如果解锁过数据库,内存里可能残留图像数据
- 建议不要存扫描图,用文字字段就够了