没有javascript的安全用户身份验证

时间:2012-03-31 07:22:04

标签: javascript hash passwords plaintext

我认为Javascript存在安全风险,因此我想允许我网站的用户无需启用Javascript即可登录。

这让我想到另一个问题。没有客户端脚本,我不知道如何在客户端散列用户密码,以避免明文密码传输。 “纯HTML + CSS”如何允许我使用密码进行哈希处理。

目前在我看来,唯一安全的选择(没有Javascript)是安全(加密)的ssl / https连接并以明文形式发送密码?

无论如何:有没有办法对用户密码进行哈希处理,以避免以明文形式通过互联网发送密码。这只能使用客户端脚本吗?

[更新] 我知道SSL可能是最接近理想的方式。 (如评论中所述)无论如何。如果在任何时候都不会通过不安全的频道发送明文用户名和明文密码,那么这已经是安全性的提高。哈希也可以被嗅探,并且没有安全(即加密)。但是在任何时候嗅探器都不能获得用户名和密码的非共享版本。 =>优点是用户不会公开他们的用户名/密码组合(可能在其他地方使用)。

毕竟,似乎没有“脚本禁用” - (spice)散列一些输入字段值。所以我认为我的问题是不可解决的。

1 个答案:

答案 0 :(得分:2)

首先,如果您使用的是SSL,则密码不会以纯文本形式发送。除了初始握手之外的所有内容都是加密的,而且非常安全。考虑到这是世界各地的银行,军方,政府每天都依赖的安全保障。我并不是说你应该相信它只是因为其他人都这样做(argument from authority) - 我只是说,如果它有问题,我们会听到它是正确的程。

其次,您无法通过客户端散列获得任何收益。您尝试阻止的基本攻击是man-in-the-middle (MITM)攻击。无论是有人窃听连接,嗅探重放攻击的密码,还是主动劫持会话(即假装成服务器和客户端到连接的两端),你都无法通过额外的方式阻止它安全

如果您认为攻击者可以突破您的SSL加密,则任何其他依赖客户端软件正在执行的操作或服务器正在发送的内容的令牌都可能会受到损害。如果它有一些客户端哈希函数,那么攻击者可以通过检查服务器发送的网页来了解该功能是什么,或者只是嗅探哈希值并在攻击者与服务器通信时使用它来模拟客户端。如果服务器发送了一些安全密钥或令牌供客户端使用和响应,攻击者就可以拦截它。

我认为您正在寻找的是two-factor authentication