【发布时间】:2011-11-29 12:37:58
【问题描述】:
我读了几篇关于会话劫持的文章。黑客嗅探cookie并从那里获取会话ID。但我认为会话 ID 作为加密值存储在 cookie 中。是不是? 是否可以轻松解密?
还有哪些敏感数据存储在会话 cookie 中...请解释一下。我们从存储在会话 cookie 中的服务器端代码中存储在会话变量中的任何内容......对吗?
请指导我有关会话 cookie 以及保护会话劫持的最佳方法。谢谢
【问题讨论】:
标签: asp.net
我读了几篇关于会话劫持的文章。黑客嗅探cookie并从那里获取会话ID。但我认为会话 ID 作为加密值存储在 cookie 中。是不是? 是否可以轻松解密?
还有哪些敏感数据存储在会话 cookie 中...请解释一下。我们从存储在会话 cookie 中的服务器端代码中存储在会话变量中的任何内容......对吗?
请指导我有关会话 cookie 以及保护会话劫持的最佳方法。谢谢
【问题讨论】:
标签: asp.net
他们的想法是他们获取会话 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? 希望对您有所帮助。
【讨论】:
一个 ASP.NET cookie 存储Session ID 和一个Authorization Ticket;但是,问题不在于是否可以解密 cookie,而是能够创建具有相同值的 cookie 并诱使服务器相信您的原始 cookie 副本是真实的。
HTTP 协议是stateless,因此客户端和服务器不维护彼此的信息。会话 Cookie(使用会话 ID 和授权票)是它们相互跟踪的方式。 Web 服务器知道哪个 Session ID 附加到哪个授权票据,如果您可以提供一对有效的这些值,Web 服务器将很乐意接受它。 Web 服务器使用对称加密算法和自动生成的密钥(默认设置)对 cookie 进行加密。如果需要,您可以通过修改 machine.config 文件中的相应部分来调整这些设置。
【讨论】: