2011-08-15 163 views
3

现在很多网站都使用AJAX让用户登录。AJAX登录安全漏洞

然而,这种设计存在一个(我认为)巨大的安全漏洞。

如果登录失败,则在向服务器发出的请求中使用了用户名/密码。

如果由于某种原因,用户在此时走到AFK,恶意用户可以查看用户发出的请求(firebug/devtools)。

这是正确的吗?

有什么我们可以做的(不这么认为)?

+3

您可以使用RSA使用公钥进行加密,即使在发送请求之前的JavaScript中也是如此。没有私钥(你只能在服务器端),不可能从Firebug日志中解密它。 – pimvdb

+0

@pimvdb,这是一个有趣的想法... –

+1

它往往会打破浏览器的“保存密码”功能,因为当表单实际提交时密码不在输入字段中了......所以只需使用HTTPS并且不要不关心不安全的客户。 – ThiefMaster

回答

5

如果Firebug在请求期间处于活动状态,它只记录请求。除此之外,它还会记录常规POST和AJAX POST(对于GET来说是相同的,但是使用登录名会受到阻碍,因为它会导致以纯文本形式将密码写入日志文件中)。

所以没有区别。此外,恶意用户可以简单地安装键盘记录器,如果真正的用户足够愚蠢,不锁定他的电脑...

哦,如果证书是完全无效的(不只是在打字错误),根本没关系...

+2

感谢您的观点。我只是不同意你最后一点:'噢,如果凭证无效,那根本就没有关系......'。这很重要。特别是对于密码。用户可能在他的密码中输入了一个字符。这将导致几乎整个密码可见。这也是密码字段在用户输入错误凭证时总是空白的原因。 – PeeHaa

+0

是的,在这种情况下,你是对的。 – ThiefMaster

1

当然,如果凭证不正确(因为登录失败),如果某些其他用户在未关闭Firefox的用户上使用devtools,它会影响吗?

+2

这很重要。大多数失败的登录尝试是因为第一个字母被大写或不是最后的错误号码。如果知道基数词,那么可能有超过10%的机会可以使用逻辑推理来猜测密码 –

3

即使没有安装Firebug,也就是说有人没有安装数据包嗅探器或键盘记录器来捕获登录尝试。

我并不是想让你偏执,但这些比你描述的方法更容易窃取密码,并且没有太多可以做的事情。

在责任级别,软件不能对这些类型的物理安全漏洞负责。本地IT管理员或安全专家负责制定防止此类事件的策略。

0

我想这可能是对的。也许在发送AJAX请求之后,Javascript应该会在发送详细信息之后清除失败的细节。