Asp.net 验证验证验证cookie是否由当前会话生成
我有一个ASP.NETMVC应用程序。在这个应用程序中,用户启动一个由电子邮件提供的URL,其中包含一个带有一些加密参数的令牌。例如,其中一个参数是移动电话号码 然后,应用程序使用自定义安全逻辑将4位代码作为SMS发送到附加的移动电话号码 此时,用户将看到一个屏幕,要求输入4位代码。在后台,ASP.NET在用户浏览器上设置了Asp.net 验证验证验证cookie是否由当前会话生成,asp.net,asp.net-mvc,security,cookies,session-cookies,Asp.net,Asp.net Mvc,Security,Cookies,Session Cookies,我有一个ASP.NETMVC应用程序。在这个应用程序中,用户启动一个由电子邮件提供的URL,其中包含一个带有一些加密参数的令牌。例如,其中一个参数是移动电话号码 然后,应用程序使用自定义安全逻辑将4位代码作为SMS发送到附加的移动电话号码 此时,用户将看到一个屏幕,要求输入4位代码。在后台,ASP.NET在用户浏览器上设置了ASP.NET\u会话IDcookie。这是标准的ASP.NET功能,可在第一次请求时提供 用户输入4位代码并确认正确后,HTTP响应将设置ASPXAUTHcookie 这一
ASP.NET\u会话ID
cookie。这是标准的ASP.NET功能,可在第一次请求时提供
用户输入4位代码并确认正确后,HTTP响应将设置ASPXAUTH
cookie
这一切都很好。然而,有人提出了一个安全问题。一种旁路技术已经浮出水面:
ASP.Net\u会话ID A
ASP.Net_SessionId B
和ASPXAUTH B
ASPXAUTH B
cookie获取经过身份验证的页面,绕过URL A上的安全代码屏幕ASPXAUTH
cookie是由传递的ASP.Net\u SessionId
生成的?
凭直觉,我找到了一个相当粗糙的解决方案,通过该解决方案,您可以将
ASPXAUTH
的值存储在用户的会话对象上,然后在每个请求上进行比较有更聪明的方法吗?您正在处理身份验证与授权的问题。拥有有效的ASP.NET会话并不能确保您知道用户是谁。有很多方法可以做到这一点,简而言之,您需要在应用程序的会话中验证用户的身份
确实,拥有有效的ASP.NET会话并不能确保您知道用户是谁。但是,这只适用于经过身份验证的用户。如果认证cookie被认为是完全独立的实体,并且它要么有效,要么无效。攻击者将有效的身份验证令牌与任何有效的会话令牌组合在一起的行为。我在这里推荐的解决方案是否无效,或者我是否完全遗漏了什么?如果攻击者泄露了有效的会话cookie,则所有赌注都将被取消。你无能为力。