验证Auth cookie是由当前会话生成的

问题描述 投票:0回答:1

我有一个ASP.NET MVC应用程序。在此应用程序中,用户启动从电子邮件提供的URL,该URL包含带有一些加密参数的令牌。例如,参数之一是手机号码。

然后,应用程序使用自定义安全逻辑将4位数的代码作为SMS发送到所附加的手机号码。

此时,系统会向用户显示要求输入4位代码的屏幕。在后台,ASP.NET在用户的浏览器上设置了ASP.Net_SessionId cookie。这是标准的ASP.NET功能,可在第一个请求时提供。

一旦用户输入4位数代码,并且确认正确无误,HTTP响应将设置ASPXAUTH cookie。

这一切正常。但是,已经提出了安全问题。一种旁路技术浮出水面:

  1. 具有2个不同的应用程序URL,URL A,URL B。
  2. 启动URLA。这将为攻击者提供ASP.Net_SessionId A
  3. 启动URLB。然后输入已知的4位数代码。这将为攻击者提供ASP.Net_SessionId BASPXAUTH B
  4. 然后,攻击者可以使用GET请求中的ASPXAUTH B cookie对经过身份验证的页面进行GET,从而绕过URL A上的安全代码屏幕。

虽然由于要在此游戏中成功播放所需的棋子数量,这并不是一个大问题,但这里存在一个问题:通过传递的ASPXAUTH

我的直觉将我引向一个相当原始的解决方案,通过该解决方案,您可以将ASP.Net_SessionId的值存储在用户的会话对象上,然后在每个请求中进行比较。

是否有更聪明的方法?

asp.net asp.net-mvc security cookies session-cookies
1个回答
0
投票
您正在处理身份验证与授权。拥有有效的ASP.NET会话并不能确保您知道用户是谁。有很多方法可以做到这一点,总之,您需要在应用程序的会话中验证用户的身份。

ASPXAUTH

© www.soinside.com 2019 - 2024. All rights reserved.