← 返回 Token 重放攻击

🛡️ 实验二:防重放机制

防护方案

通过设备绑定和一次性 Nonce,阻止 Token 在其他设备使用

🎮 设备绑定演示

📱 设备 A (Device-001)
Token: 未登录
登录后查看结果...
💻 设备 B (Device-002) - 尝试重放
粘贴 Token 后操作...

🔐 Nonce 防重放演示

每次敏感操作需要唯一的 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 余额: 加载中...