我在ASPNET Boilerplate fw上构建了一个WebApp,并使用了HTTPS协议。我使用了Burp Suite社区版进行测试,发现了与重播攻击相关的风险。根本原因是基于令牌的设计,用户注销后令牌不会被吊销。那么,有什么可以绕过它的吗?
测试步骤:
- 打开打嗝套件
- 打开浏览器,登录我的WebApp
- 在WebApp中执行任务(创建新记录)
- 转到Burp,在我的HTTP历史中创建新记录操作上找到HTTP请求,将其发送到Repeater
- 注销,关闭浏览器
- 转到Burp/Repeater,重新发送HTTP请求并接收HTTP/1.1 200 OK
- 正在检查数据库:插入了相同的记录
有人能给我一些建议吗?感谢
我已经通过更新安全戳解决了这个问题。这将损害性能,但解决了我的安全风险。如果有人有更好的解决方案,请分享。感谢
在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;
});