ASP.NET 中的会话劫持对策
Posted
技术标签:
【中文标题】ASP.NET 中的会话劫持对策【英文标题】:Session hijacking counter measures in ASP.NET 【发布时间】:2014-07-09 02:08:37 【问题描述】:我想采取措施防止/减轻会话劫持。因此,我想知道来自内置 ASP.NET 或自定义组件的选项。
请注意,会话劫持指的是Forms Auth session
和Session 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 中的会话劫持对策的主要内容,如果未能解决你的问题,请参考以下文章