fix(realname): 增加身份证唯一性校验,防止同一证件重复实名

This commit is contained in:
yml2213
2026-10-29 12:06:53 +08:00
parent 86fbc05e9b
commit 2029c1f4fb
16 changed files with 538 additions and 53 deletions
@@ -0,0 +1,17 @@
-- +goose Up
-- 实名唯一性:同一身份证号最多绑定一个已实名账号。
-- encrypted_id_no 使用随机 nonce,同一身份证每次密文不同,不能直接做唯一键;
-- 因此新增由明文身份证号 + 服务端密钥计算的 HMAC 指纹,仅认证通过时写入。
-- 存量记录先保持 NULL,查询时按 masked_id_no + 解密比对兼容,命中后按需补写。
ALTER TABLE user_realname
ADD COLUMN id_no_hash CHAR(64) NULL COMMENT '身份证号 HMAC-SHA256 指纹,仅认证通过时写入' AFTER encrypted_id_no,
ADD KEY idx_user_realname_masked_id_no (masked_id_no),
ADD UNIQUE KEY uk_user_realname_id_no_hash (id_no_hash);
-- +goose Down
ALTER TABLE user_realname
DROP INDEX uk_user_realname_id_no_hash,
DROP INDEX idx_user_realname_masked_id_no,
DROP COLUMN id_no_hash;