使用预共享密钥进行身份验证

时间:2012-08-14 18:21:51

标签: security authentication web-applications

我们正在开发一个需要安全用户身份验证的GWT Web应用程序。我们可以通过传真向用户提供凭证。所以我们可以使用预共享秘密。我们不可能在此应用中使用ssl或https。

我想知道在服务器上存储传递和验证用户的更安全的方法是什么。我怀疑,我们应该将密码哈希两次吗?

1 个答案:

答案 0 :(得分:3)

如果没有加密,您应该在客户端散列密码(使用服务器提供的随机盐),并比较生成的散列。

这种方法有两个好处:

  1. 每次登录时散列值不同
  2. 密码永远不会以纯文本格式发送。
  3. 但是,如果没有加密和正确的身份验证,会话劫持和此类攻击都是微不足道的。

    请注意,在http之上没有某种加密/验证层的情况下,没有办法让这个安全足以阻止一个合理胜任的恶意方的攻击尝试,所以最好不要给用户任何虚假安全感,mmkay?

    “让我们尽可能安全登录”中的最大问题是会话侧面攻击在没有加密的情况下相当简单。 Sidejacking(在Wikipedia中定义)是:

      

    会话侧面攻击,攻击者使用数据包嗅探来读取双方之间的网络流量以窃取会话cookie。许多网站对登录页面使用SSL加密,以防止攻击者看到密码,但经过身份验证后,不会对网站的其余部分使用加密。这允许可以读取网络流量的攻击者拦截提交给服务器的所有数据或客户端查看的网页。由于此数据包含会话cookie,因此即使密码本身没有受到损害,也允许他冒充受害者。[3]不安全的Wi-Fi热点特别容易受到攻击,因为共享网络的任何人通常都能够读取其他节点和接入点之间的大部分网络流量。