通过设备绑定和一次性 Nonce,阻止 Token 在其他设备使用
每次敏感操作需要唯一的 Nonce,使用后立即失效
当前 Nonce: -
// 设备绑定
router.post('/login', (req, res) => {
const deviceId = req.headers['x-device-id']
const token = generateToken()
sessions[token] = { userId, deviceId } // 绑定设备
res.json({ token })
})
router.get('/profile', (req, res) => {
const session = sessions[token]
if (session.deviceId !== req.headers['x-device-id']) {
return res.status(403).json({ error: '设备不匹配' })
}
// ...
})
// Nonce 防重放
router.post('/transfer', (req, res) => {
const { nonce } = req.body
if (usedNonces.has(nonce)) {
return res.status(400).json({ error: '请求已过期' })
}
usedNonces.add(nonce)
// 执行转账...
})
alice 余额: 加载中...