【发布时间】:2021-11-03 11:47:33
【问题描述】:
我正在使用 IdentityServer4(.NET Core 3.1) 进行身份验证(OIDC 协议)。但是过期会话的过去会话 id 可用于在应用程序中获取身份验证,因为我的应用程序容易受到会话重放/会话 Hjijacking/Man in Middle 攻击。
请分享一些针对此漏洞的解决方案。
【问题讨论】:
-
MITM 保护由 SSL 提供。至少使用 TLS1.2 并且不要禁用证书验证。为什么您认为您的应用程序在任何方面都存在漏洞?这是一个真正的问题,还是您正在尝试解决某些顾问报告的问题?为什么您的应用程序和 Identity Server 会完全接受 过期 会话 ID?
-
感谢您的快速回复@PanagiotisKanavos。我不认为这个问题是由具有适当证据的安全顾问报告的。并且服务器正在接受我这是问题所在。他们还建议“添加一个为每次登录尝试随机更改的新 cookie。在身份验证之前和之后生成不同的会话 id。此外,成功身份验证后的每个请求都应该与一个额外的会话标识符 cookie 相关联,该 cookie 也会随机更改和过期当用户从应用程序注销或关闭浏览器时。
-
您描述的是默认行为,
closes the browser除外。这并不意味着会话以任何方式关闭。 HTTP 是一种无状态协议,因此无法知道浏览器是否关闭。 client 代码需要明确要求退出,服务器会关闭问题作为响应。这就是所有网站的工作方式。会话过期以处理崩溃、断开连接或仅关闭浏览器而不注销的用户。许多网站都有在浏览器关闭时发送注销请求的脚本,但不能保证服务器会收到它。
标签: asp.net-core identityserver4 openid-connect asp.net-core-3.1