2012-08-14 56 views
2

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

我想知道什么是更安全的方式来存储传递到服务器上并验证用户;我怀疑是否应该两次散列密码?

+0

为什么SSL和HTTPS是一个禁忌? – Kimvais 2012-08-14 18:27:31

+0

这只是因为我们认为它在应用程序设计上需要一些改变;不是吗? – Ehsan 2012-08-15 14:54:29

回答

3

如果无法进行加密,则应在客户端散列密码(与服务器提供的随机盐一起腌制)并比较得到的散列值。

这种方法具有两个优点:

  1. 散列值是不同的每个登录
  2. 密码明文永远不会发送。

然而,没有加密和适当的认证,会话劫持和此类攻击是微不足道的。

请注意,有没有办法让这个安全性足以衬托出有能力的恶意方的任何攻击企图没有某种形式在HTTP之上的加密/ authentiaction层,所以它可能是最好的不要给用户任何虚假的安全感,mmkay?

“让我们只使登录尽可能安全”中的最大问题是会话侧面攻击是没有加密的微不足道的。 Sidejacking(如Wikipedia定义):

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

+0

非常感谢您的有益回应; 以这种方式,我应该在服务器上存储普通密码(不是散列版本)。这样对吗?它让我担心一点关于服务器上的通过安全性。 只是另一个;在用户通过传真传送盐的同时发送盐是否更安全? – Ehsan 2012-08-15 15:05:07

+0

关于HTTPS,我认为最终我们必须为网络应用启用它,因为缺乏安全性。 – Ehsan 2012-08-15 15:06:36

相关问题