我有一个ASP.NET MVC应用程序。在此应用程序中,用户启动从电子邮件提供的URL,该URL包含带有一些加密参数的令牌。例如,参数之一是手机号码。
然后,应用程序使用自定义安全逻辑将4位数的代码作为SMS发送到所附加的手机号码。
此时,系统会向用户显示要求输入4位代码的屏幕。在后台,ASP.NET在用户的浏览器上设置了ASP.Net_SessionId
cookie。这是标准的ASP.NET功能,可在第一个请求时提供。
一旦用户输入4位数代码,并且确认正确无误,HTTP响应将设置ASPXAUTH
cookie。
这一切正常。但是,已经提出了安全问题。一种旁路技术浮出水面:
ASP.Net_SessionId A
。ASP.Net_SessionId B
和ASPXAUTH B
。ASPXAUTH B
cookie对经过身份验证的页面进行GET,从而绕过URL A上的安全代码屏幕。虽然由于要在此游戏中成功播放所需的棋子数量,这并不是一个大问题,但这里存在一个问题:通过传递的ASPXAUTH
?
ASP.Net_SessionId
的值存储在用户的会话对象上,然后在每个请求中进行比较。 是否有更聪明的方法?
ASPXAUTH