关于会话劫持& ASP.NET中的保护

时间:2011-11-29 12:37:59

标签: asp.net

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

会话cookie中存储了哪些其他敏感数据...请解释。我们存储在会话cookie中的存储在会话cookie中的会话变量中的任何内容......是吗?

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

2 个答案:

答案 0 :(得分:1)

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

现在有一种情况是敏感数据存储在cookie上,这是当前用户的角色。避免在<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? 希望这会对你有所帮助。

答案 1 :(得分:1)

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

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