2009-09-09 31 views
7

我的web应用程序仅通过SSL运行,并在用户名和密码成功登录后为每个用户设置时间限制的cookie。系统最大的弱点是对现有用户的cookie有损害。和两个猜测一个会话ID GUID。在Windows 2003上生成的GUID是否可安全地用作会话ID?

我知道第一个弱点的机制,但我想知道我需要多少担心攻击者猜测会话ID GUID的机会是基于他们以前通过登录到他们已经设置的帐户获得的GUID向上?在这种情况下,Web服务器是Windows 2003,而使用.Net 3.5生成GUID。

回答

6

GUID并非旨在加密安全,只是唯一的。相当多的格式是可以预测的 - 48位MAC地址,如果你知道它是如何产生的,并且另外几个位用于处理时间戳冲突,那么这个时间戳是有点可预测的。技术上复杂的攻击者有很好的反向工程GUID的机会。

您确实需要一个cryptographically secure PRNG作为安全会话密钥。

+0

GUID创建算法已更改。他们不再使用MAC地址。他们只有128Bit的伪随机数。他们有很多安全问题。 – 2009-09-12 07:02:51

+0

在.net 3.5 guid中既没有MAC地址也没有时间戳。 – 2009-09-12 07:48:23

+1

供应商描述的.net 3.5 GUID是加密安全的吗? – ConcernedOfTunbridgeWells 2009-09-12 14:49:48

0

.net 3.5 GUID几乎不可能猜到。 GUID的绝对数量是巨大的 - 有更多的GUID比宇宙中的沙子上的谷物等。它们不是严格'保证'是独特的(尽管显然SQL NEWID保证是唯一的)

如果你想为自己测试一下,生成几亿,然后找到重复项(你不会找到任何)。

+1

的确,GUID是伪随机的,但计算机永远不会生成真正的随机值。我争辩说他们很容易猜到。你能否详细说明你可以计算所有以下GUID的解释? (示例或源代码) – 2009-09-12 07:52:42

相关问题