如何防止对 AspNetBoilerplate 框架的重放攻击

How to prevent Replay Attack on AspNetBoilerplate framework

我在 ASPNET Boilerplate fw 上构建了一个 WebApp,并使用了 HTTPS 协议。 我使用Burp Suite Community Edition进行测试,发现了一个与Replay Attack相关的风险。根本原因是基于令牌的设计,用户注销后令牌不会被撤销。那么有什么解决方法可以克服它吗?

测试步骤:

  1. 打开 Burp Suite
  2. 打开浏览器,登录我的WebApp
  3. 正在 WebApp 中执行任务,即创建新记录
  4. 转到 Burp,在我的 HTTP 历史记录中创建新记录操作中找到 HTTP 请求,将其发送到 Repeater
  5. 注销,关闭浏览器
  6. 转到Burp/Repeater,重新发送HTTP请求并接收HTTP/1。1 200 OK
  7. 正在检查数据库:插入了相同的记录

谁能给我一些建议?谢谢

我已经通过更新安全标记解决了这个问题。这会损害性能,但会解决我的安全风险。如果有人有更好的解决方案,请分享。谢谢

AccountController.cs

var user = await _userManager.FindByNameAsync(User.Identity.Name);
await _userManager.UpdateSecurityStampAsync(user);
await HttpContext.SignOutAsync(IdentityServerConstants.DefaultCookieAuthenticationScheme);

StartUp.cs

services.Configure<SecurityStampValidatorOptions>(options =>
{
   //Enables immediate logout, after updating the user's stat.
   options.ValidationInterval = TimeSpan.Zero;
});