ASP.NET 中的会话劫持对策

Posted

技术标签:

【中文标题】ASP.NET 中的会话劫持对策【英文标题】:Session hijacking counter measures in ASP.NET 【发布时间】:2014-07-09 02:08:37 【问题描述】:

我想采取措施防止/减轻会话劫持。因此,我想知道来自内置 ASP.NET 或自定义组件的选项。

请注意,会话劫持指的是Forms Auth sessionSession State

我的 ASP.NET 一直在为所有页面使用 HTTPS。但是,一旦第三方以某种方式获得会话 cookie id,会话可能会受到损害,例如来自用户的硬盘驱动器、跨站点脚本攻击和中间人攻击

我特别担心会话 id 劫持,因为我的项目一直使用 https

以下是我查看过的链接,这些链接是几年前写的:

Foiling Session Hijacking Attempts Jeff Prosise 其缺点请参阅注意事项部分。

我在网上找不到太多相关信息,或者与 Jeff 的不同。

【问题讨论】:

见Do you consider session replication as a security risk? 【参考方案1】:

这里有几个建议:

    为您的 sessionId 加盐。这将确保您拥有唯一的会话 ID - 不过,我很确定默认的 ASP.NET 会话 ID 对于您的目的来说足够独特;但是,为了增加安全性,您可以使用您可以控制或自我识别的东西。例如,您可以将 GUID 用作盐 - 您可以通过根据需要进行更新来控制它。 在字典对象中将用户的 SessionId 和用户 IP 地址作为一对跟踪。这将使您能够将会话 ID 与 IP 地址相匹配,并揭示在用户 LAN 之外发生的任何会话劫持。显然并非没有缺陷,因为用户的计算机或路由器是否被感染并不重要,但至少会使攻击者更难完成任务。

不确定如果用户的计算机被感染了你会怎么做,但无论你是否增加防御措施,这种风险都存在。

【讨论】:

什么可以阻止邪恶的第三方使用您在第一点中提到的相同会话 ID?它仍然有效,你只是改变了一代。正如您所提到的,当 IP 地址更改(漫游移动用户)和人们共享地址(谷歌的代理服务器)时,第二点存在缺陷。

以上是关于ASP.NET 中的会话劫持对策的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 身份会话 cookie 的安全性如何?

ASP.NET 中的会话超时

什么是 ASP.NET 中的默认会话超时?

ASP.NET 中的会话固定

ASP.NET 中的 REST WCF 服务和会话

ASP.NET 中的 FluentNHibernate 会话管理