1

听说asp.net会员的哈希算法是sha-1,但是我在大多数文章中看到它不再安全,我也想知道大多数专业开发人员是否使用asp.net会员或者他们在登录、身份验证、系统/项目授权方面提出自己的解决方案/实施。

asp.net 成员资格真的为 Web 应用程序的登录、身份验证、授权提供了安全且强大的解决方案吗?:)

我问的原因是我想知道开发人员是否真的在他们的项目中使用它。

先生/女士,您的回答会很有帮助。

4

3 回答 3

3

.NET 4.0 中的default hash algorithm更改为 SHA256。因此,如果您使用的是 .NET 4.0,您将非常安全。

您还可以在 web.config 中指定哈希算法:

<system.web>
    <machineKey validation="SHA256" />
    <membership defaultProvider="myMembership" hashAlgorithmType="SHA256">
    ...
</system.web>

实际上,这是 .NET 4.0 中的一个重大变化。因此,如果您在 .NET 3.5 中有一个现有应用程序并升级到 .NET 4.0,则使用 SHA1 散列的密码可能不再在 .NET 4.0 中使用,除非您将算法类型改回 SHA1。

于 2013-01-26T17:40:00.550 回答
3

如果我正在编写用户数量不多的内部应用程序,那么我通常依赖 asp.net memberhsip。它很熟悉,我知道如何快速启动和运行。其他开发人员也相当了解它,因此不需要解释。组织通常也希望控制用户帐户。

另一方面,如果您正在创建一个公共站点并且需要在做出贡献之前对用户进行身份验证(例如堆栈溢出),您可能需要考虑实现OpenId,这样用户就不必使用您的域创建新帐户。他们可以改用 Google/Facebook/Twitter。有一些图书馆可以帮助您入门。

于 2013-01-26T17:49:23.377 回答
2

并不真地。ASP.NET 成员资格提供程序是设计失败的。

  1. 它强制您使用预定义的域模型实体,而不是使用您自己的。
  2. 不可轻松互换(每家公司使用不同的提供商或不同形式的身份验证)
  3. 预定义的 MembershipProvider 抽象是一个失败的类设计。(输出参数? - 是的,请测试它)

去实现你自己的提供者。对于密码,请选择您的哈希算法(sha1、sha512...)。

完成实现后,使用 FormsAuthentication 类将其与您的提供程序集成。

于 2013-01-26T17:54:58.380 回答