【问题标题】:Asp.net session fixation (ASP.NET_sessionid)Asp.net 会话固定 (ASP.NET_sessionid)
【发布时间】:2016-06-30 16:43:03
【问题描述】:

Asp.net_SessionId 是系统默认生成的。每当此值从一个浏览器复制到另一个用户时,就会自动访问登录凭据内的页面。

案例:首先,我在一个浏览器 (chrome) 中使用我的凭据登录。现在我在私人模式下打开同一个浏览器(同样是 chrome)。现在,我将登录的浏览器会话值复制到私有模式,并尝试访问仪表板、配置文件、设置等页面。因此,只需复制会话值,我就可以访问所有需要登录的页面。

如何预防?请给我一些建议。

我可以在跨浏览器中阻止这种情况,但我无法在同一个浏览器中阻止它。

我尝试过的:

我实现了此处描述的技术,但在我的情况下它不起作用。是的,它可以使用两个不同的浏览器,但不能使用单个浏览器。

http://www.codeproject.com/Articles/859579/Hack-proof-your-asp-net-applications-from-Session

请帮我解决这个问题。

【问题讨论】:

  • 你有什么可能的用途来阻止某人以私密模式打开另一个 Chrome 窗口并复制会话 ID?
  • 这与用户在同一个浏览器中打开两个标签页(非隐私模式)有何不同?你也想防止这种情况发生吗?
  • 跟打开新标签页和新窗口太不一样了。在新标签应用程序将使用相同的 cookie,而在另一个窗口中将生成新的 cookie。两者完全不同。

标签: c# asp.net session


【解决方案1】:

每当这个值从一个浏览器复制到另一个用户 自动访问登录凭据内的页面。

这取决于您如何验证用户。如果您只是像经典的 ASP 时代那样使用 Session State 来跟踪用户身份验证,那是真的。

现在,我们通过 SSL 使用 ASP.Net 身份或表单身份验证(成员资格提供者),其中令牌被加密,并且在任何地方都具有注销功能。所以在 SSL 中破解 Authentication Cookie 并不容易(我并不是说不可能)。

在 ASP.Net MVC 中,我们不需要像在 ASP.Net Web Form 和 Classic ASP 中那样使用会话状态。此外,在 ASP.Net MVC 中直接使用 Session State 成为一种不好的做法。

最重要的是,如果您通过 SSL 使用 ASP.Net 身份或表单身份验证,我什至不会担心。如果你还没有使用这些,你肯定要考虑使用它。

【讨论】:

  • 感谢您的建议,您能否提供一个关于 ASP.Net 身份或通过 SSL 进行表单身份验证的简短想法/代码。
  • 正如你所建议的,我实现了 ASP.Net Identity 但没有运气。它创建具有加密值的 .ASPXAUTH cookie,但是当我将此值从一个浏览器复制到另一个浏览器时,它允许用户无需登录即可访问该站点。
  • 基于 cookie 的身份验证的概念是,如果某人拥有有效的 cookie,则可以在任何地方甚至从控制台应用程序访问您的站点。包括银行在内的所有主要网站都是这样工作的。只要您通过 SSL 发送 cookie,就没有任何风险。
  • 这是真的,先生,但是使用“Burp suit”任何人都可以通过更改cookie值登录到站点,那么登录的含义是什么。我需要一个具体的登录解决方案,如果没有有效的用户名和密码,任何人都无法登录。请给我一个方法...
  • 加密的cookie是输入有效用户名和密码后的最终结果。 (如果您使用 SSL),除非您的计算机遭到入侵,否则没有人可以窃取您的 cookie。如果您的计算机遭到入侵,黑客甚至不会费心窃取该 cookie;相反,他们会在您的计算机上安装 key logger
猜你喜欢
  • 2011-01-25
  • 2010-12-12
  • 2013-04-27
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
  • 2015-05-21
相关资源
最近更新 更多