【问题标题】:front-line authentication with Web Services使用 Web 服务进行前线身份验证
【发布时间】:2012-02-14 04:34:45
【问题描述】:

我似乎对我需要做什么感到困惑。这是一个正常的登录场景。我在数据库中存储密码的哈希值。[请不要考虑我使用什么哈希函数]。在登录时 用户输入他的纯文本密码。现在我需要做的是散列这个密码,将它传递给网络服务然后我的数据库需要比较两个散列值。现在我不知道的是。

  1. 当我在登录时使用盐对密码进行哈希处理时。它仍然是我得到的相同值还是其他东西

  2. 我的数据库(Sql server 2008)能否比较两个散列值,如果不是,那么我需要做什么。不需要从数据库中获取密码。

  3. 通过 Web 服务传递散列密码需要额外考虑安全性吗?

我还需要处理密码恢复。我可以在这里使用加密/解密算法。
请建议我需要做什么。

【问题讨论】:

    标签: c# asp.net web-services enterprise-library


    【解决方案1】:

    为了提高安全性,最好使用随机盐。

    我在存储在 SQL 服务器中时用来保护密码的方式是:

    从密码创建盐,然后通过连接生成哈希 用户名和密码..

    它将使盐依赖于密码和用户名。如果您正在恢复密码,那么如果凭据正确,那么您可以重置密码。

    我可以使用加密/解密算法吗 ??

    根据您的加密方法,创建您自己的算法,使用 .net 加密库使用盐加密和解密密码。

    【讨论】:

      【解决方案2】:

      您也必须将盐保存到数据库中。 在身份验证中,获取盐,用盐对输入的密码进行哈希处理,与数据库中的哈希值进行比较。所有这些都可以驻留在 C# 代码中。

      您无法从哈希值中获取原始密码。您可以生成一个随机密码并强制客户在下次登录时更改密码。

      所以我认为散列值可以安全地在线传输。对于站点管理员,即使他可以访问数据库,他仍然不知道客户的密码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-28
        • 2014-06-08
        • 2018-06-17
        • 1970-01-01
        • 2012-02-10
        • 1970-01-01
        相关资源
        最近更新 更多