前端如何安全地处理多因素认证的第二步验证?

Prog.朝曦 阅读 17

我在做登录流程,第一步密码验证通过后要跳转到 MFA 页面输入验证码。但不确定该不该在前端存用户的临时凭证(比如用 sessionStorage),怕有安全风险。

现在后端返回了一个 temp_token 让我传给第二步验证接口,我直接存在 sessionStorage 里了,但同事说这样容易被 XSS 拿到,那正确的做法应该是什么?

有没有更安全的方式传递这个临时 token?或者是不是根本不该让前端接触这个值?

我来解答 赞 4 收藏
二维码
手机扫码查看
1 条解答
ლ宇硕
ლ宇硕 Lv1
别存前端了,直接这样:后端把 temp_token 写进 HttpOnly + Secure + SameSite=Strict 的 cookie 里,前端调第二步接口时浏览器自动带 cookie,前端代码完全不碰这个 token,XSS 也偷不走。

如果后端必须前端传 token,至少用 MemoryStorage(比如一个 JS 变量)存,别用 sessionStorage,等验证完立刻清掉。

// 后端返回 temp_token,前端用内存变量存(别用 localStorage / sessionStorage)
let tempToken = null;

fetch('/api/mfa/verify', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ token: tempToken })
});

// 验证完立刻清掉
tempToken = null;
点赞 2
2026-02-25 12:00