会话安全

时间:2009-04-09 18:33:05

标签: security

我正在使用一个公共站点,该站点将使用键入会话ID的数据库支持的用户会话。我正在努力防止会话劫持和篡改;我返回客户端的会话数据本身价值有限,但我想防止批发盗窃。我在这里制定了一个小方案,但我想得到一些反馈和批评。

  • 会话开始时,会为客户端提供唯一密钥和会话数据的哈希值。
  • 在每个后续请求中,客户端发送会话密钥+会话数据的散列。
  • 如果修改了会话数据,则会向客户端提供反映其会话数据的新哈希值。
  • 如果请求带有与数据库不匹配的错误哈希,则会话被标记为已泄露。请求和会话的所有后续请求都会导致通过复制受感染的会话来创建新会话。新会话引用从中复制的会话以进行安全审计。

我想我可以看到遭到入侵的请求,以扫描大规模攻击。

非常感谢提前。

4 个答案:

答案 0 :(得分:2)

这似乎相对安全,但有几种方法可以规避:

  • 如果会话密钥被盗,哈希也可能被盗。只要合法​​客户端不做任何事情,劫持者就可以接管并保持密钥/散列/数据的一致性。在合法客户醒来之前,你不会看到任何东西......如果有的话。

  • 在任何情况下,如果您的哈希值不够神秘/安全,那么可以简单地从数据中猜出(也可能被嗅探)。您应该使用某种随机盐(每个会话,每个用户,每个时间帧......)以确保这很难猜到。

答案 1 :(得分:2)

我不明白会话数据哈希是什么意思。它解决了什么问题?

可能导致问题,例如同时在两个标签中加载两个页面时。如果第一个请求更改了会话数据,但另一个请求已经发送,则它将具有不正确的哈希值。

另外,如果你复制旧会话,我不知道你用这个做了什么?

只需拥有一个简单的会话ID即可:

  • 在登录时更改它以避免会话固定和
  • 将其锁定到IP以避免攻击者通过sidejacking进行控制。

为防止攻击者查看数据,您必须使用SSL。

答案 2 :(得分:0)

听起来不错。

您可能想要投入验证算法的一件事是用户来自的IP地址。

对于当前的用户身份验证可能不是那么好,但是如果会话被泄露,则不同的IP将是一个巨大的标志,但您可以使用该信息添加到IP表规则以阻止潜在的恶意用户。 / p>

另一个想法是跟踪引用网址。关于恶意行为,看看有人来自哪里有任何一致性可能会揭示程序中的漏洞(如果有的话)。

答案 3 :(得分:0)

您无法指望IP地址是唯一的还是不会更改。企业防火墙通常通过NAT转换合并甚至随机更改IP地址。它可以使系统更安全,但它会对尝试需要相同IP地址的服务器身份验证方案造成严重破坏。

在过去的几年中,还有一个问题 - 系统比以前更具移动性。我经常“休眠”我的笔记本而不是关闭它们,但这意味着我来自不同的家庭,工作,星巴克等IP地址。这可以绊倒服务器,会话超时时间短至15-30分钟 - 我需要花费大量时间从办公室到午餐等等。