你注册一个App时,填完手机号点“获取验证码”,几秒后手机一震,弹出6位数字——这背后就是验证机制在悄悄干活。
不是防君子,是拦小人
验证机制最实在的作用,就是把“不是本人”的操作卡住。比如你微信登录突然换设备,它弹个短信验证码或人脸识别,不是为了多此一举,而是防止别人盗号后清空你的零钱通、转发钓鱼链接给亲友。
常见验证方式,各有分工
密码是最基础的“你知道什么”,但光靠它早不够用了。现在主流是组合拳:
- 短信验证码:适合一次性操作,比如改密码、大额转账;
- 邮箱验证:常用于注册确认、找回账号;
- 图形验证码(比如拼图、选汉字):专治机器人批量注册;
- 双因素认证(2FA):密码+手机App动态码,银行类App基本标配。
某电商后台曾因只用密码登录,被撞库攻击导致上千用户订单被篡改。加了短信二次验证后,异常登录尝试直接掉到90%以下。
开发里怎么写个简单验证?
以登录接口为例,后端校验逻辑可能长这样:
if (user.password === inputPassword && user.verificationCode === inputCode && codeNotExpired(user.codeTime)) {
generateSessionToken();
} else {
return { error: '验证失败,请重试' };
}注意:真实项目中密码绝不会明文比对,而是用 bcrypt 加密后校验;验证码也必须有时效和次数限制,否则就形同虚设。
再比如前端表单提交前,常做基础验证:
function validateEmail(email) {
const re = /^[^@]+@[^@]+\.[^@]+$/;
return re.test(email);
}这虽不能替代后端验证,但能立刻提醒用户“邮箱格式不对”,体验更顺滑。
说白了,验证机制不是给系统添麻烦,是给用户兜底。你没察觉它存在,恰恰说明它干得够稳。