【问题标题】:Regarding Session Hijacking & Protection in ASP.NET关于 ASP.NET 中的会话劫持和保护
【发布时间】:2011-11-29 12:37:58
【问题描述】:

我读了几篇关于会话劫持的文章。黑客嗅探cookie并从那里获取会话ID。但我认为会话 ID 作为加密值存储在 cookie 中。是不是? 是否可以轻松解密?

还有哪些敏感数据存储在会话 cookie 中...请解释一下。我们从存储在会话 cookie 中的服务器端代码中存储在会话变量中的任何内容......对吗?

请指导我有关会话 cookie 以及保护会话劫持的最佳方法。谢谢

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    他们的想法是他们获取会话 cookie 并按原样使用它,将其发送到服务器,然后服务器将 cookie 与受害者会话连接起来。实际上会话 cookie 上没有数据,只是会话 id 的加密数字。

    现在有一种情况是敏感数据存储在 cookie 上,即当前用户的角色。为了避免在<roleManager cacheRolesInCookie="false"<roleManager cacheRolesInCookie="false"上对 web.config 进行可能的解密和更改

    同样在身份验证cookie和角色管理器上总是使用requireSSL="true",因此不可能窃取身份验证cookie,但您必须使用安全页面才能做到这一点。

    有些人如何窃取关键会话。如果程序员将向用户显示的关键数据依赖于会话 ID,则可以做到这一点。例如,如果您将电话号码和姓名存储在会话变量中并将其显示给用户,那么有人可以窃取整个网页并阅读它(如果不是 ssl)。如果你已经连接了后台并使用会话 id 访问了隐藏的管理页面,那么如果有人窃取会话 cookie 并打开页面,那么他就可以访问该管理员的后台页面。

    因此,由您决定不要在会话数据上存储关键信息,并始终使用 ssl 页面来管理和获取发送 cookie 关键数据。

    现在,如果黑客窃取了会话 cookie,而您在那里只是存储用户在之前页面中看到的内容,亚马逊等产品的历史,那没什么大不了的,因为仍然无法将这段历史与用户联系起来,但任何人都可以嗅探用户看到的网址。

    当然,您也可以不将关键数据存储在任何未加密的 cookie 上!

    因此,您将数据分为关键数据和非关键数据,始终对页面使用 SSL,对关键数据使用 cookie,并且永远不要信任来自不安全页面的数据。

    您还可以阅读: Can some hacker steal the cookie from a user and login with that name on a web site? 希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      一个 ASP.NET cookie 存储Session ID 和一个Authorization Ticket;但是,问题不在于是否可以解密 cookie,而是能够创建具有相同值的 cookie 并诱使服务器相信您的原始 cookie 副本是真实的。

      HTTP 协议是stateless,因此客户端和服务器不维护彼此的信息。会话 Cookie(使用会话 ID 和授权票)是它们相互跟踪的方式。 Web 服务器知道哪个 Session ID 附加到哪个授权票据,如果您可以提供一对有效的这些值,Web 服务器将很乐意接受它。 Web 服务器使用对称加密算法和自动生成的密钥(默认设置)对 cookie 进行加密。如果需要,您可以通过修改 machine.config 文件中的相应部分来调整这些设置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-09
        • 1970-01-01
        • 2011-02-08
        • 1970-01-01
        • 1970-01-01
        • 2019-02-05
        • 2011-09-22
        相关资源
        最近更新 更多