【问题标题】:ASP MVC Session security risksASP MVC 会话安全风险
【发布时间】:2013-05-03 07:24:40
【问题描述】:

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

【问题讨论】:

    标签: asp.net-mvc session session-variables session-cookies sessionid


    【解决方案1】:

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

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

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

    这里有一些关于 .NET 的 Forms Authentication Ticket and Cookie 的更多信息

    另外,请参阅与您的问题有些相关的this Q&A - 它可能会提供有关事情如何运作的更多见解并帮助您实现所需。

    【讨论】:

    • 我知道我应该使用 asp mvc 提供的 AuthCookie,但是,在这个应用程序中,我需要模拟“2 个会话”,我需要在同一页面中保留两个单独的用户会话,在一种他可以登录其中任何一个的方式,并且从其中一个注销不会干扰另一个。所以我最终使用框架会话来实现这一点。否则我认为我应该制作自己的会话 cookie?
    • 这是您那里的一些奇怪的要求操作,我不完全理解。但是,您可以使用加密信息发布您自己的 cookie,这将使您既安全又实现您想要的。 AFAIK,无论如何,您不能从一个客户那里获得两次会议,所以……我对此的了解将是有限的。但是,对于您最初的问题,不,会话 ID 只会以纯文本形式存储。
    • 最后添加了一些内容可能对您有所帮助
    猜你喜欢
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 2014-05-13
    • 2020-06-25
    • 1970-01-01
    • 2012-09-24
    相关资源
    最近更新 更多