2

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

我想知道将通行证存储在服务器上并对用户进行身份验证的更安全的方法是什么?我怀疑我们应该对密码进行两次哈希处理吗?

4

1 回答 1

3

如果无法进行加密,您应该在客户端对密码进行哈希处理(使用服务器提供的随机盐进行加盐)并比较生成的哈希值。

这种方法有两个优点:

  1. 每次登录的哈希值都不同
  2. 密码永远不会以纯文本形式发送。

但是,如果没有加密和适当的身份验证,会话劫持和此类攻击是微不足道的。

请注意,如果没有在 http 之上的某种加密/身份验证层,就没有办法使其足够安全,以挫败相当有能力的恶意方的任何攻击尝试,因此最好不要给用户任何感觉虚假安全,mmkay?

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

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

于 2012-08-14T18:49:06.153 回答