1

只是想知道,由于会话ID存储在cookie客户端,我可以很容易地修改该cookie并将会话ID值更改为另一个用户会话ID的值。允许第一个用户从第二个用户获取数据。 如果会话用于存储“登录会话”,用户可以登录,就好像它是另一个用户一样,那么容易“破解”的会话也是如此? 我自己试了一下,我可以很容易地导航与另一个用户会话,也许这只能工作,因为两个会话来自相同的IP和计算机,但ASP MVC引擎提供任何安全检查,以避免这种情况?ASP MVC会话安全风险

回答

1

您不应该使用会话来存储“登录会话”。 .ASPXAUTH cookie用于存储经过身份验证的用户信息,并且使用您设置的机器密钥或由IIS自动生成的机器密钥对此cookie进行加密。

如果您担心会话劫持(取决于您的应用程序,您应该),那么您应该使用身份验证Cookie(userId)和会话中的信息的组合以确保值确实匹配。

会话和身份验证这两个概念通常会混淆起来,但它们不应该是这样。一个用户向应用程序标识用户并确认用户实际上已经过身份验证(Forms Auth Ticket/Cookie),另一个只是在Web请求之间存储数据。

这里是围绕Forms Authentication Ticket and Cookie为.NET

另外,请参阅this Q&A,有点您问题相关的一些信息 - 它可以提供一些更深入的理解是如何工作的,并帮助你实现你所需要的。

+0

我知道我应该使用由asp mvc提供的AuthCookie,但是,在这个应用程序中,我需要模拟“2个会话”,我需要在同一页面中保留两个单独的用户会话,以他可以登录其中任何一个,并从一个注销不会干扰另一个。所以我最终使用框架会话来实现这一点。否则,我想我应该制作我自己的会话饼干? – user1777914 2013-05-08 23:22:20

+0

这是您在那里我不完全理解的一些奇怪的需求操作。但是,您可以使用加密的信息发布自己的cookie,这样可以使您既安全又实现您想要的内容。 AFAIK,无论如何你都不能从一个客户那里进行两个会话,所以......我的知识将会受到限制。但是,对于您的原始问题,不,会话ID将以纯文本形式存储。 – Tommy 2013-05-08 23:26:20

+0

在最后添加了一些可以帮助你的东西 – Tommy 2013-05-08 23:28:16