【发布时间】:2019-10-09 21:35:58
【问题描述】:
我正在尝试了解安全登录身份验证。实现登录功能的代码在以下链接中。 (在这种情况下,使用了 guid,但在现实生活中可以使用更好的机制)
用户登录后,欢迎页面会显示以下链接中的代码,以检查用户的真实性。 (这是我能找到的用于验证用户身份验证的最常用代码)
我正在考虑一种可能会失败的情况。考虑场景
- 受害者已登录
- 受害者将在服务器上创建 2 个会话变量。前任: Session["userLoggedin"] = "受害者" 会话["AuthToken"] = "GUID"
- 受害者将在其浏览器中创建一个 cookie。前任: Cookie["AuthToken"] = "GUID"
- 攻击者向受害者发送一个恶意链接,该链接对其状态进行了一些更改(发送好友请求、删除用户、将受害者注销......)。 假设链接如下: www.somewebsite.com/Logout 这会注销用户。
- 受害者单击链接,获得身份验证,因为来自浏览器的 cookie 即“GUID”被发送到服务器并根据会话变量进行验证。
- 用户被注销
我知道上面提到的可能性没有严重的影响,但是,这种情况可以避免吗?或者这甚至是一个有效的场景?我错过了什么吗?
这是我的问题
- 可以处理这种情况吗? (考虑到这是一个有效的场景)
- 我指的是安全代码吗?
- 这是什么漏洞?
- 如何缓解这种情况?
【问题讨论】:
-
据我了解,只有当请求来自跨站点时,这才属于 CSRF。如果攻击者与受害者共享的链接来源相同怎么办。例如: 1. 受害者登录到 www.somewebsite.com 2. 攻击者也使用同一个网站并且知道几个 URL。他向受害者发送了一个链接 例如:www.somewebsite.com/DoSomething 3. 受害者单击此链接时没有意识到这是一个恶意链接。 (受害者没有 url 知识) 4. 点击时,cookie 被传递并被验证,动作完成如果我错了请纠正我
标签: c# asp.net security authentication session-cookies