【问题标题】:How to prevent Replay Attack on AspNetBoilerplate framework如何防止对 AspNetBoilerplate 框架的重放攻击
【发布时间】:2021-06-06 03:47:36
【问题描述】:
我在 ASPNET Boilerplate fw 上构建了一个 WebApp,并使用了 HTTPS 协议。
我使用 Burp Suite Community Edition 进行测试,发现与 Replay Attack 相关的风险。根本原因来自基于令牌的设计,用户注销后令牌不会被撤销。那么有什么办法可以克服吗?
测试步骤:
- 打开 Burp 套件
- 打开浏览器,登录我的WebApp
- 在 WebApp 中执行任务,即创建新记录
- 转到 Burp,在我的 HTTP 历史记录中的创建新记录操作中找到 HTTP 请求,将其发送到中继器
- 注销,关闭浏览器
- 进入 Burp/Repeater,重新发送 HTTP 请求并接收 HTTP/1.1 200 OK
- 检查数据库:插入相同的记录
谁能给我一些建议?谢谢
【问题讨论】:
标签:
aspnetboilerplate
man-in-the-middle
【解决方案1】:
我已通过更新安全标记解决了这个问题。这会损害性能,但会解决我的安全风险。如果有人有更好的解决方案,请分享。谢谢
在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;
});